<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://okapiframework.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dkonovalyenko</id>
	<title>Okapi Framework - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://okapiframework.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dkonovalyenko"/>
	<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php/Special:Contributions/Dkonovalyenko"/>
	<updated>2026-04-15T08:05:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=Filters&amp;diff=1050</id>
		<title>Filters</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=Filters&amp;diff=1050"/>
		<updated>2025-11-14T09:42:57Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Code Simplification Rules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Filters are the components that convert input documents from their native file format into a common internal set of [[Glossary#Resource|resources]] that all Okapi components use. The extracted content can be re-written into the original file format. When using the steps, the extraction is done by the [[Raw Document to Filter Events Step]] and the re-writing by the [[Filter Events to Raw Document Step]].&lt;br /&gt;
&lt;br /&gt;
Note: The [[Okapi Filters Plugin for OmegaT]] allows you to use some of the filters directly from [http://www.omegat.org OmegaT].&lt;br /&gt;
&lt;br /&gt;
==List of the Filters==&lt;br /&gt;
&lt;br /&gt;
The framework distribution comes with the following filters:&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;8&amp;quot; width=100%&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* [[Archive Filter]]&lt;br /&gt;
* [[DTD Filter]]&lt;br /&gt;
* [[Doxygen Filter]]&lt;br /&gt;
* [[EPUB Filter]]&lt;br /&gt;
* [[HTML Filter]]&lt;br /&gt;
* [[HTML5-ITS Filter]]&lt;br /&gt;
* [[ICML Filter]]&lt;br /&gt;
* [[IDML Filter]]&lt;br /&gt;
* [[JSON Filter]]&lt;br /&gt;
* [[Markdown Filter]]&lt;br /&gt;
* [[Message Format Filter]]&lt;br /&gt;
* [[MIF Filter]]&lt;br /&gt;
* [[Moses Text Filter]]&lt;br /&gt;
* [[Multi-Parsers Filter]]&lt;br /&gt;
* [[OpenOffice Filter]]&lt;br /&gt;
* [[OpenXML Filter|OpenXML (MS Office) Filter]]&lt;br /&gt;
|&lt;br /&gt;
* [[PDF Filter]]&lt;br /&gt;
* [[Pensieve TM Filter]]&lt;br /&gt;
* [[PHP Content Filter]]&lt;br /&gt;
* [[Plain Text Filter]]&lt;br /&gt;
* [[PO Filter]]&lt;br /&gt;
* [[Properties Filter]]&lt;br /&gt;
* [[Rainbow Translation Kit Filter]]&lt;br /&gt;
* [[Regex Filter]]&lt;br /&gt;
* [[SDL Trados Package Filter]]&lt;br /&gt;
* [[Simplification Filter]]&lt;br /&gt;
* [[Table Filter]]&lt;br /&gt;
* [[TMX Filter]]&lt;br /&gt;
* [[Trados-Tagged RTF Filter]]&lt;br /&gt;
|&lt;br /&gt;
* [[Transifex Filter]]&lt;br /&gt;
* [[TS Filter]]&lt;br /&gt;
* [[TTX Filter]]&lt;br /&gt;
* [[TXML Filter]]&lt;br /&gt;
* [[Wiki Filter]]&lt;br /&gt;
* [[WSXZ Package Filter]]&lt;br /&gt;
* [[Vignette Filter]]&lt;br /&gt;
* [[XLIFF Filter]]&lt;br /&gt;
* [[XLIFF-2 Filter]]&lt;br /&gt;
* [[XML Filter]]&lt;br /&gt;
* [[XML Stream Filter]]&lt;br /&gt;
* [[YAML Filter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Supported File Formats==&lt;br /&gt;
&lt;br /&gt;
The following is a list of some of the file formats supported by the distribution through [[Understanding Filter Configurations|pre-defined configurations]]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Format''' || '''Extensions''' || '''Pre-Defined Configuration''' || '''Filter''' || '''Notes'''&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Android Strings || .xml || &amp;lt;code&amp;gt;okf_xml-AndroidStrings&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Apple Stringsdict || .stringsdict || &amp;lt;code&amp;gt;okf_xml-AppleStringsdict&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Archive || .zip || &amp;lt;code&amp;gt;okf_archive&amp;lt;/code&amp;gt; || [[Archive Filter]] || Meta filter that processes zip files with various formats as one file.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Auto Xliff || .xlf, .xliff || &amp;lt;code&amp;gt;okf_autoxliff&amp;lt;/code&amp;gt; || [[Auto Xliff Filter]] || Detects the version of an XLIFF file and then hands parsing off to the appropriate filter &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| CSV (Comma-separated values files) || .csv, .txt || &amp;lt;code&amp;gt;okf_table_csv&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| CSV (Multiple complex sub-formats) || .csv || &amp;lt;code&amp;gt;okf_multiparsers&amp;lt;/code&amp;gt; || [[Multi-Parsers Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DITA || .dita, .ditamap, .xml || &amp;lt;code&amp;gt;okf_xmlstream-dita&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DocBook v5.0 || .xml || &amp;lt;code&amp;gt;okf_xml-docbook&amp;lt;/code&amp;gt; || [[XML Filter]] || Since Okapi 1.42. &amp;amp;lt;footnote&amp;gt; is not handled properly.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DokuWiki pages || .txt || &amp;lt;code&amp;gt;okf_wiki&amp;lt;/code&amp;gt; || [[Wiki Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Doxygen-commented files || .c, .h, cpp || &amp;lt;code&amp;gt;okf_doxygen&amp;lt;/code&amp;gt; || [[Doxygen Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DTD || .dtd || &amp;lt;code&amp;gt;okf_dtd&amp;lt;/code&amp;gt; || [[DTD Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| EPUB || .epub || &amp;lt;code&amp;gt;okf_epub&amp;lt;/code&amp;gt; || [[EPUB Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Fixed-Width Columns Table || .txt || &amp;lt;code&amp;gt;okf_table_fwc&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Idiom WorldServer XLIFF || .xlf || &amp;lt;code&amp;gt;okf_xliff-iws&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| InCopy ICML || .wcml || &amp;lt;code&amp;gt;okf_icml&amp;lt;/code&amp;gt; || [[ICML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| InDesign IDML || .idml || &amp;lt;code&amp;gt;okf_idml&amp;lt;/code&amp;gt; || [[IDML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| iOS/Mac Strings|| .strings || &amp;lt;code&amp;gt;okf_regex-macStrings&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java Properties || .properties || &amp;lt;code&amp;gt;okf_properties&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java Properties (Output not escaped) || .properties || &amp;lt;code&amp;gt;okf_properties-outputNotEscaped&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java XML Properties || .xml || &amp;lt;code&amp;gt;okf_xml-JavaProperties&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java XML Properties (HTML strings) || .xml || &amp;lt;code&amp;gt;okf_xmlstream-JavaPropertiesHTML&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| JSON || .json || &amp;lt;code&amp;gt;okf_json&amp;lt;/code&amp;gt; || [[JSON Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Haiku CatKeys || .catkeys || &amp;lt;code&amp;gt;okf_table_catkeys&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML (any) || .html, .htm || &amp;lt;code&amp;gt;okf_html&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML (Well-formed, and XHTML) || .html, .htm|| &amp;lt;code&amp;gt;okf_html-wellFormed&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML5 (and XHTML5) || .html, .htm|| &amp;lt;code&amp;gt;okf_itshtml5&amp;lt;/code&amp;gt; || [[HTML5-ITS Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Markdown || .md || &amp;lt;code&amp;gt;okf_markdown&amp;lt;/code&amp;gt; || [[Markdown Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Excel 2007/2010 || .xlsx, .xlsm, .xltx, .xltm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft PowerPoint 2007/2010 || .pptx, .pptm, .potx, .potm, .ppsx, .ppsm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Visio || .vsdx, .vsdm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Word 2007/2010 || .docx, .docm, .dotx, .dotm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| MIF || .mif || &amp;lt;code&amp;gt;okf_mif&amp;lt;/code&amp;gt; || [[MIF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Moses Text || .txt || &amp;lt;code&amp;gt;okf_mosestext&amp;lt;/code&amp;gt; || [[Moses Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Calc || .ods, .ots || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Draw || .odg, .otg || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Impress || .odp, .otp || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Writer || .odt, .ott || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PDF || .pdf || &amp;lt;code&amp;gt;okf_pdf&amp;lt;/code&amp;gt; || [[PDF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Pensieve TM]] || .pentm || &amp;lt;code&amp;gt;okf_pensieve&amp;lt;/code&amp;gt; || [[Pensieve TM Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PHP Content || .php || &amp;lt;code&amp;gt;okf_phpcontent&amp;lt;/code&amp;gt; || [[PHP Content Filter]] || Can be used as a subfilter only&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Plain Text (Line = text unit) || .txt || &amp;lt;code&amp;gt;okf_plaintext&amp;lt;/code&amp;gt; || [[ Plain Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Plain Text (Paragraph = text unit) || .txt || &amp;lt;code&amp;gt;okf_plaintext_paragraphs&amp;lt;/code&amp;gt; || [[Plain Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PO || .po || &amp;lt;code&amp;gt;okf_po&amp;lt;/code&amp;gt; || [[PO Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PO (Monolingual style) || .po || &amp;lt;code&amp;gt;okf_po-monolingual&amp;lt;/code&amp;gt; || [[PO Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Rainbow Translation Kit manifests || .rkm || &amp;lt;code&amp;gt;okf_rainbowkit&amp;lt;/code&amp;gt; || [[Rainbow Translation Kit Filter]] || Used as a tkit reader only&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Regex (Any text-based format) || .txt || &amp;lt;code&amp;gt;okf_regex&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| RDF (Mozilla RDF) || .rdf || &amp;lt;code&amp;gt;okf_xml-MozillaRDF&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| RESX || .resx || &amp;lt;code&amp;gt;okf_xml-resx&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDLPPX || .sdlppx || &amp;lt;code&amp;gt;okf_sdlpackage&amp;lt;/code&amp;gt; || [[SDL Trados Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDLRPX || .sdlrpx || &amp;lt;code&amp;gt;okf_sdlpackage&amp;lt;/code&amp;gt; || [[SDL Trados Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDL[[XLIFF]] || .sdlxlf || &amp;lt;code&amp;gt;okf_xliff-sdl&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Skype Language Files || .lang || &amp;lt;code&amp;gt;okf_properties-skypeLang&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SRT (Sub-Rip Text, sub-titles files) || .srt || &amp;lt;code&amp;gt;okf_regex-srt&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Tab-Delimiter files || .tsv, .txt || &amp;lt;code&amp;gt;okf_table_tsv&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Tex files || .tex || &amp;lt;code&amp;gt;okf_tex&amp;lt;/code&amp;gt; || [[TEX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[TMX]] || .tmx || &amp;lt;code&amp;gt;okf_tmx&amp;lt;/code&amp;gt; || [[TMX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Transifex project || .txp || &amp;lt;code&amp;gt;okf_transifex&amp;lt;/code&amp;gt; || [[Transifex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Trados-Tagged RTF || .rtf || &amp;lt;code&amp;gt;okf_tradosrtf&amp;lt;/code&amp;gt; || [[Trados-Tagged RTF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TS - Qt TS files || .ts || &amp;lt;code&amp;gt;okf_ts&amp;lt;/code&amp;gt; || [[TS Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TTX - Trados TagEditor TTX files || .ttx || &amp;lt;code&amp;gt;okf_ttx&amp;lt;/code&amp;gt; || [[TTX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TXML - Wordfast Pro TXML files || .txml || &amp;lt;code&amp;gt;okf_txml&amp;lt;/code&amp;gt; || [[TXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Vignette Export/Import Content || .xml || &amp;lt;code&amp;gt;okf_vignette&amp;lt;/code&amp;gt; || [[Vignette Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| WSXZ Package Filter || .wsxz || &amp;lt;code&amp;gt;okf_wsxzpackage&amp;lt;/code&amp;gt; || [[WSXZ Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XHTML || .html, .htm || &amp;lt;code&amp;gt;okf_html-wellFormed&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| WIX (Windows Installer XML) localization files || .wix || &amp;lt;code&amp;gt;okf_xml-WixLocalization&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[XLIFF]] v1.2 || .xlf, .xliff || &amp;lt;code&amp;gt;okf_xliff&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[XLIFF]] v2 || .xlf || &amp;lt;code&amp;gt;okf_xliff2&amp;lt;/code&amp;gt; || [[XLIFF-2 Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XML (Generic, using [[ITS]] defaults) || .xml || &amp;lt;code&amp;gt;okf_xml&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XML (Generic, using stream reader) || .xml || &amp;lt;code&amp;gt;okf_xmlstream&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| YAML (Generic YAML filter) || .yml, .yaml || &amp;lt;code&amp;gt;okf_yaml&amp;lt;/code&amp;gt; || [[YAML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Message Format (ICU Message Format Filter) || Any container format that supports subfilters || &amp;lt;code&amp;gt;okf_messageformat&amp;lt;/code&amp;gt; || [[Message Format Filter]] ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that most filters allow you to [[Understanding Filter Configurations|create your own configurations]] to support more file formats.&lt;br /&gt;
&lt;br /&gt;
==Code Simplification Rules==&lt;br /&gt;
&lt;br /&gt;
There are two levels of code simplification: filter and step (the [[Inline Codes Simplifier Step]] and [[Post-segmentation Inline Codes Removal Step]]). And there are different ways of configuring it:&lt;br /&gt;
&lt;br /&gt;
Firstly, the extraction pipeline can contain just:&lt;br /&gt;
: - [[Raw Document to Filter Events Step]]&lt;br /&gt;
&lt;br /&gt;
At the moment, only [[IDML Filter]], [[XML Filter]] and [[Simplification Filter]] support this. It should be noted that the last one performs like a wrapper for another filter.&lt;br /&gt;
&lt;br /&gt;
Secondly, the extraction pipeline can look like that:&lt;br /&gt;
: - [[Raw Document to Filter Events Step]]&lt;br /&gt;
: - [[Inline Codes Simplifier Step]]&lt;br /&gt;
&lt;br /&gt;
This is the only way for filters that do not support their own code simplification, and it should be used with care because the final merge may not always handle this correctly. The aforementioned [[IDML Filter]] and [[XML Filter]] can perform their own simplification, and the added [[Inline Codes Simplifier Step]] should not affect the events produced.&lt;br /&gt;
&lt;br /&gt;
Thirdly, the extraction pipeline can consist of:&lt;br /&gt;
: - [[Raw Document to Filter Events Step]]&lt;br /&gt;
: - [[Segmentation Step]]&lt;br /&gt;
: - [[Post-segmentation Inline Codes Removal Step]]&lt;br /&gt;
&lt;br /&gt;
Here, the [[Post-segmentation Inline Codes Removal Step]] performs code simplification after segmentation rules are applied, and it may be useful for skipping extra codes between segments.&lt;br /&gt;
&lt;br /&gt;
By default, the [[Inline Codes Simplifier Step]] and [[Post-segmentation Inline Codes Removal Step]] maximise the trimming and merging (aka simplification) of inline codes. This can be tuned via the following string parameters:&lt;br /&gt;
: - &amp;lt;code&amp;gt;removeLeadingTrailingCodes&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; by default&lt;br /&gt;
: - &amp;lt;code&amp;gt;mergeCodes&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; by default&lt;br /&gt;
: - &amp;lt;code&amp;gt;rules&amp;lt;/code&amp;gt; - empty by default&lt;br /&gt;
&lt;br /&gt;
Only the [[Inline Codes Simplifier Step]] configuration can be overridden by the optional filter ones via the following parameters:&lt;br /&gt;
: - &amp;lt;code&amp;gt;moveLeadingAndTrailingCodesToSkeleton&amp;lt;/code&amp;gt; - maps to the &amp;lt;code&amp;gt;removeLeadingTrailingCodes&amp;lt;/code&amp;gt;&lt;br /&gt;
: - &amp;lt;code&amp;gt;mergeAdjacentCodes&amp;lt;/code&amp;gt; - maps to the &amp;lt;code&amp;gt;mergeCodes&amp;lt;/code&amp;gt;&lt;br /&gt;
: - &amp;lt;code&amp;gt;simplifierRules&amp;lt;/code&amp;gt; - maps to the &amp;lt;code&amp;gt;rules&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The simplification rules allow the prevention of specific codes trimming or merging. &lt;br /&gt;
&lt;br /&gt;
===General Syntax===&lt;br /&gt;
&lt;br /&gt;
The rules parser ignores irrelevant whitespace. Rules can be separated by spaces, newlines or nothing. This makes it easier to accommodate various container formats and their whitespace normalization rules. When a rule applies, it means &amp;quot;do not simplify the match code&amp;quot;. Uppercase tokens are constants and predefined by the rule parser. Multiple rules are always OR'ed together.&lt;br /&gt;
&lt;br /&gt;
For more details, see the JavaCC grammar: &amp;lt;code&amp;gt;../okapi/core/src/main/javacc/SimplifierRules.jj&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule Examples===&lt;br /&gt;
&lt;br /&gt;
If Code has any of these flags, then don't simplify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DELETABLE or ADDABLE or CLONEABLE;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;=&amp;quot; is string match&lt;br /&gt;
Match basic TAGTYPE opening, closing or standalone &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA = &amp;quot;a&amp;quot; and TAGTYPE = OPENING;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;~&amp;quot; is regex match&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA ~ &amp;quot;a.*&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can negate any of the match operators &lt;br /&gt;
Don't simplify if the DATA does not match the regex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA !~ &amp;quot;a.*&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Match on type, linebreak in this case, don't simplify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;lb&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't simplify any rich text types&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;bold&amp;quot; or TYPE = &amp;quot;italic&amp;quot; or TYPE = &amp;quot;underline&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expressions can be recursive (supports embedded parens)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;bold&amp;quot; or (DATA = &amp;quot;bar&amp;quot; or (DATA = &amp;quot;foo&amp;quot; and TYPE = &amp;quot;underline&amp;quot;));&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===Filter Config Examples===&lt;br /&gt;
&lt;br /&gt;
Examples of using simplifier rules within the filter config formats used by Okapi.&lt;br /&gt;
&lt;br /&gt;
'''YAML:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
simplifierRules: |&lt;br /&gt;
  if ADDABLE or DELETABLE or CLONEABLE;&lt;br /&gt;
  if DATA = &amp;quot;&amp;lt;br/&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;font&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;/font&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
  if DATA ~ &amp;quot;\\&amp;lt;font.+&amp;quot; or DATA ~ &amp;quot;\\&amp;lt;img.+&amp;quot; or DATA ~ &amp;quot;\\&amp;lt;a.+&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ITS:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;its:rules xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot; version=&amp;quot;1.0&amp;quot; xmlns:itsx=&amp;quot;http://www.w3.org/2008/12/its-extensions&amp;quot; xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- See ITS specification at: http://www.w3.org/TR/its/ --&amp;gt;&lt;br /&gt;
 &amp;lt;its:translateRule selector=&amp;quot;//*&amp;quot; translate=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;its:withinTextRule selector=&amp;quot;//codeph&amp;quot; withinText=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;its:withinTextRule selector=&amp;quot;//ph&amp;quot; withinText=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;okp:simplifierRules moveLeadingAndTrailingCodesToSkeleton=&amp;quot;yes&amp;quot; mergeAdjacentCodes=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
 if ADDABLE or DELETABLE or CLONEABLE; if DATA ~ &amp;quot;.+&amp;quot;;&lt;br /&gt;
 &amp;lt;/okp:simplifierRules&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''FPRM (Parameters):'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#v1&lt;br /&gt;
extractNotes.b=true&lt;br /&gt;
simplifierRules=if ADDABLE or DELETABLE or CLONEABLE; if DATA ~ &amp;quot;.+&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Font Mapping==&lt;br /&gt;
&lt;br /&gt;
The font mapping can be considered as a filter's ability to automatically substitute font information in the target document on the fly, according to a provided configuration - this helps to reduce the amount of reformatting and post-translation DTP. It is supported by IDML and OpenXML (DOCX, PPTX and XLSX documents) filters at the moment.&lt;br /&gt;
&lt;br /&gt;
The following font mapping configuration options are available:&lt;br /&gt;
* The source locale regular expression pattern: &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;en.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;en-UK&amp;lt;/code&amp;gt;, etc. It can be ommited to apply the mapping to any source locale.&lt;br /&gt;
* The target locale regular expression pattern: &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ru.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ru-RU&amp;lt;/code&amp;gt;, etc. It can be ommited to apply the mapping to any target locale.&lt;br /&gt;
* The source font name regular expression pattern: &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Arial.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;, etc. It can be ommited to apply the mapping to any source font name found.&lt;br /&gt;
* The target font name: &amp;lt;code&amp;gt;Arial&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;, etc. It should not be empty. And if it is made so, the mapping configuration is ignored.&lt;br /&gt;
&lt;br /&gt;
Also, the configured font mappings are applied in the order they are stated. And the final target font value is determined by a sequential&lt;br /&gt;
substitution of the source font values. I.e. if there is more than one mapping:&lt;br /&gt;
# &amp;lt;code&amp;gt;Arial&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Sans Serif&amp;lt;/code&amp;gt;&lt;br /&gt;
then the first mapping will produce &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt; replacement and the second one will be applied to this new value, thus, ending up with the &amp;lt;code&amp;gt;Sans Serif&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters serialisation format can look like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.sourceLocalePattern=en.*&lt;br /&gt;
fontMappings.0.targetLocalePattern=ru.*&lt;br /&gt;
fontMappings.0.sourceFontPattern=Times.*&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.1.sourceLocalePattern=ru&lt;br /&gt;
fontMappings.1.targetLocalePattern=fr&lt;br /&gt;
fontMappings.1.sourceFontPattern=The Sims Sans&lt;br /&gt;
fontMappings.1.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When source locale, target locale and source font are omitted:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And this is the same as the abovementioned:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.sourceLocalePattern=.*&lt;br /&gt;
fontMappings.0.targetLocalePattern=.*&lt;br /&gt;
fontMappings.0.sourceFontPattern=.*&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=Post-segmentation_Inline_Codes_Removal_Step&amp;diff=1049</id>
		<title>Post-segmentation Inline Codes Removal Step</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=Post-segmentation_Inline_Codes_Removal_Step&amp;diff=1049"/>
		<updated>2025-11-14T09:37:32Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Steps Header}}&lt;br /&gt;
__TOC__&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This step attempts to simplify (trim and merge) as many inline codes as possible by looking at each linguistically distinct segment in a TextUnit.&lt;br /&gt;
&lt;br /&gt;
'''The step must be run after segmentation.''' Joins adjacent inline codes inside segments, and optionally moves leading and trailing codes from the segment to an inter-segment Textpart. Original (un-merged) codes are saved as okp:merged attributes inside the generated XLIFF file. Trimmed codes are simply written outside the &amp;quot;mrk&amp;quot; elements.&lt;br /&gt;
&lt;br /&gt;
Takes: Filter Events. Sends: Filter Events.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Remove leading and trailing codes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to remove leading and trailing inline codes from the text units and place them outside the segment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Merge codes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to merge adjacent inline codes in the text units.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
Currently bi-lingual formats such as XLIFF, TMX, TTX etc. will not have their codes simplified as the codes may differ in source and target. Codes must align with id's across source and target.&lt;br /&gt;
&lt;br /&gt;
[[Category:Steps]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=Inline_Codes_Simplifier_Step&amp;diff=1048</id>
		<title>Inline Codes Simplifier Step</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=Inline_Codes_Simplifier_Step&amp;diff=1048"/>
		<updated>2025-11-14T09:35:53Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Steps Header}}&lt;br /&gt;
__TOC__&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This step joins adjacent inline codes in text units, and optionally moves leading and trailing codes from the text unit to the skeleton.&lt;br /&gt;
&lt;br /&gt;
Takes: Filter Events. Sends: Filter Events.&lt;br /&gt;
&lt;br /&gt;
Only the source codes are affected by this step. So it should be used before any target is created in the text unit.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Remove leading and trailing codes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to remove leading and trailing inline codes from the text units and place them into the skeleton.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Merge codes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to merge adjacent inline codes in the text units.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
None known.&lt;br /&gt;
&lt;br /&gt;
[[Category:Steps]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=Inline_Codes_Simplifier_Step&amp;diff=1047</id>
		<title>Inline Codes Simplifier Step</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=Inline_Codes_Simplifier_Step&amp;diff=1047"/>
		<updated>2025-11-14T09:35:06Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Steps Header}}&lt;br /&gt;
__TOC__&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This step joins adjacent inline codes in text units, and optionally moves leading and trailing codes from the text unit to the skeleton.&lt;br /&gt;
&lt;br /&gt;
Takes: Filter Events. Sends: Filter Events.&lt;br /&gt;
&lt;br /&gt;
Only the source codes are affected by this step. So it should be used before any target is created in the text unit.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Remove leading and trailing codes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to remove leading and trailing inline codes from the text units and place them into the skeleton.&lt;br /&gt;
&amp;lt;cite&amp;gt;Merge codes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to merge adjacent inline codes in the text units.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
None known.&lt;br /&gt;
&lt;br /&gt;
[[Category:Steps]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=Filters&amp;diff=1045</id>
		<title>Filters</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=Filters&amp;diff=1045"/>
		<updated>2025-09-23T13:48:35Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Code Simplification Rules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Filters are the components that convert input documents from their native file format into a common internal set of [[Glossary#Resource|resources]] that all Okapi components use. The extracted content can be re-written into the original file format. When using the steps, the extraction is done by the [[Raw Document to Filter Events Step]] and the re-writing by the [[Filter Events to Raw Document Step]].&lt;br /&gt;
&lt;br /&gt;
Note: The [[Okapi Filters Plugin for OmegaT]] allows you to use some of the filters directly from [http://www.omegat.org OmegaT].&lt;br /&gt;
&lt;br /&gt;
==List of the Filters==&lt;br /&gt;
&lt;br /&gt;
The framework distribution comes with the following filters:&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;8&amp;quot; width=100%&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* [[Archive Filter]]&lt;br /&gt;
* [[DTD Filter]]&lt;br /&gt;
* [[Doxygen Filter]]&lt;br /&gt;
* [[EPUB Filter]]&lt;br /&gt;
* [[HTML Filter]]&lt;br /&gt;
* [[HTML5-ITS Filter]]&lt;br /&gt;
* [[ICML Filter]]&lt;br /&gt;
* [[IDML Filter]]&lt;br /&gt;
* [[JSON Filter]]&lt;br /&gt;
* [[Markdown Filter]]&lt;br /&gt;
* [[Message Format Filter]]&lt;br /&gt;
* [[MIF Filter]]&lt;br /&gt;
* [[Moses Text Filter]]&lt;br /&gt;
* [[Multi-Parsers Filter]]&lt;br /&gt;
* [[OpenOffice Filter]]&lt;br /&gt;
* [[OpenXML Filter|OpenXML (MS Office) Filter]]&lt;br /&gt;
|&lt;br /&gt;
* [[PDF Filter]]&lt;br /&gt;
* [[Pensieve TM Filter]]&lt;br /&gt;
* [[PHP Content Filter]]&lt;br /&gt;
* [[Plain Text Filter]]&lt;br /&gt;
* [[PO Filter]]&lt;br /&gt;
* [[Properties Filter]]&lt;br /&gt;
* [[Rainbow Translation Kit Filter]]&lt;br /&gt;
* [[Regex Filter]]&lt;br /&gt;
* [[SDL Trados Package Filter]]&lt;br /&gt;
* [[Simplification Filter]]&lt;br /&gt;
* [[Table Filter]]&lt;br /&gt;
* [[TMX Filter]]&lt;br /&gt;
* [[Trados-Tagged RTF Filter]]&lt;br /&gt;
|&lt;br /&gt;
* [[Transifex Filter]]&lt;br /&gt;
* [[TS Filter]]&lt;br /&gt;
* [[TTX Filter]]&lt;br /&gt;
* [[TXML Filter]]&lt;br /&gt;
* [[Wiki Filter]]&lt;br /&gt;
* [[WSXZ Package Filter]]&lt;br /&gt;
* [[Vignette Filter]]&lt;br /&gt;
* [[XLIFF Filter]]&lt;br /&gt;
* [[XLIFF-2 Filter]]&lt;br /&gt;
* [[XML Filter]]&lt;br /&gt;
* [[XML Stream Filter]]&lt;br /&gt;
* [[YAML Filter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Supported File Formats==&lt;br /&gt;
&lt;br /&gt;
The following is a list of some of the file formats supported by the distribution through [[Understanding Filter Configurations|pre-defined configurations]]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Format''' || '''Extensions''' || '''Pre-Defined Configuration''' || '''Filter''' || '''Notes'''&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Android Strings || .xml || &amp;lt;code&amp;gt;okf_xml-AndroidStrings&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Apple Stringsdict || .stringsdict || &amp;lt;code&amp;gt;okf_xml-AppleStringsdict&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Archive || .zip || &amp;lt;code&amp;gt;okf_archive&amp;lt;/code&amp;gt; || [[Archive Filter]] || Meta filter that processes zip files with various formats as one file.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Auto Xliff || .xlf, .xliff || &amp;lt;code&amp;gt;okf_autoxliff&amp;lt;/code&amp;gt; || [[Auto Xliff Filter]] || Detects the version of an XLIFF file and then hands parsing off to the appropriate filter &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| CSV (Comma-separated values files) || .csv, .txt || &amp;lt;code&amp;gt;okf_table_csv&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| CSV (Multiple complex sub-formats) || .csv || &amp;lt;code&amp;gt;okf_multiparsers&amp;lt;/code&amp;gt; || [[Multi-Parsers Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DITA || .dita, .ditamap, .xml || &amp;lt;code&amp;gt;okf_xmlstream-dita&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DocBook v5.0 || .xml || &amp;lt;code&amp;gt;okf_xml-docbook&amp;lt;/code&amp;gt; || [[XML Filter]] || Since Okapi 1.42. &amp;amp;lt;footnote&amp;gt; is not handled properly.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DokuWiki pages || .txt || &amp;lt;code&amp;gt;okf_wiki&amp;lt;/code&amp;gt; || [[Wiki Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Doxygen-commented files || .c, .h, cpp || &amp;lt;code&amp;gt;okf_doxygen&amp;lt;/code&amp;gt; || [[Doxygen Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DTD || .dtd || &amp;lt;code&amp;gt;okf_dtd&amp;lt;/code&amp;gt; || [[DTD Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| EPUB || .epub || &amp;lt;code&amp;gt;okf_epub&amp;lt;/code&amp;gt; || [[EPUB Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Fixed-Width Columns Table || .txt || &amp;lt;code&amp;gt;okf_table_fwc&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Idiom WorldServer XLIFF || .xlf || &amp;lt;code&amp;gt;okf_xliff-iws&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| InCopy ICML || .wcml || &amp;lt;code&amp;gt;okf_icml&amp;lt;/code&amp;gt; || [[ICML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| InDesign IDML || .idml || &amp;lt;code&amp;gt;okf_idml&amp;lt;/code&amp;gt; || [[IDML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| iOS/Mac Strings|| .strings || &amp;lt;code&amp;gt;okf_regex-macStrings&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java Properties || .properties || &amp;lt;code&amp;gt;okf_properties&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java Properties (Output not escaped) || .properties || &amp;lt;code&amp;gt;okf_properties-outputNotEscaped&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java XML Properties || .xml || &amp;lt;code&amp;gt;okf_xml-JavaProperties&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java XML Properties (HTML strings) || .xml || &amp;lt;code&amp;gt;okf_xmlstream-JavaPropertiesHTML&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| JSON || .json || &amp;lt;code&amp;gt;okf_json&amp;lt;/code&amp;gt; || [[JSON Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Haiku CatKeys || .catkeys || &amp;lt;code&amp;gt;okf_table_catkeys&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML (any) || .html, .htm || &amp;lt;code&amp;gt;okf_html&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML (Well-formed, and XHTML) || .html, .htm|| &amp;lt;code&amp;gt;okf_html-wellFormed&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML5 (and XHTML5) || .html, .htm|| &amp;lt;code&amp;gt;okf_itshtml5&amp;lt;/code&amp;gt; || [[HTML5-ITS Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Markdown || .md || &amp;lt;code&amp;gt;okf_markdown&amp;lt;/code&amp;gt; || [[Markdown Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Excel 2007/2010 || .xlsx, .xlsm, .xltx, .xltm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft PowerPoint 2007/2010 || .pptx, .pptm, .potx, .potm, .ppsx, .ppsm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Visio || .vsdx, .vsdm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Word 2007/2010 || .docx, .docm, .dotx, .dotm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| MIF || .mif || &amp;lt;code&amp;gt;okf_mif&amp;lt;/code&amp;gt; || [[MIF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Moses Text || .txt || &amp;lt;code&amp;gt;okf_mosestext&amp;lt;/code&amp;gt; || [[Moses Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Calc || .ods, .ots || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Draw || .odg, .otg || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Impress || .odp, .otp || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Writer || .odt, .ott || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PDF || .pdf || &amp;lt;code&amp;gt;okf_pdf&amp;lt;/code&amp;gt; || [[PDF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Pensieve TM]] || .pentm || &amp;lt;code&amp;gt;okf_pensieve&amp;lt;/code&amp;gt; || [[Pensieve TM Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PHP Content || .php || &amp;lt;code&amp;gt;okf_phpcontent&amp;lt;/code&amp;gt; || [[PHP Content Filter]] || Can be used as a subfilter only&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Plain Text (Line = text unit) || .txt || &amp;lt;code&amp;gt;okf_plaintext&amp;lt;/code&amp;gt; || [[ Plain Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Plain Text (Paragraph = text unit) || .txt || &amp;lt;code&amp;gt;okf_plaintext_paragraphs&amp;lt;/code&amp;gt; || [[Plain Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PO || .po || &amp;lt;code&amp;gt;okf_po&amp;lt;/code&amp;gt; || [[PO Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PO (Monolingual style) || .po || &amp;lt;code&amp;gt;okf_po-monolingual&amp;lt;/code&amp;gt; || [[PO Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Rainbow Translation Kit manifests || .rkm || &amp;lt;code&amp;gt;okf_rainbowkit&amp;lt;/code&amp;gt; || [[Rainbow Translation Kit Filter]] || Used as a tkit reader only&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Regex (Any text-based format) || .txt || &amp;lt;code&amp;gt;okf_regex&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| RDF (Mozilla RDF) || .rdf || &amp;lt;code&amp;gt;okf_xml-MozillaRDF&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| RESX || .resx || &amp;lt;code&amp;gt;okf_xml-resx&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDLPPX || .sdlppx || &amp;lt;code&amp;gt;okf_sdlpackage&amp;lt;/code&amp;gt; || [[SDL Trados Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDLRPX || .sdlrpx || &amp;lt;code&amp;gt;okf_sdlpackage&amp;lt;/code&amp;gt; || [[SDL Trados Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDL[[XLIFF]] || .sdlxlf || &amp;lt;code&amp;gt;okf_xliff-sdl&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Skype Language Files || .lang || &amp;lt;code&amp;gt;okf_properties-skypeLang&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SRT (Sub-Rip Text, sub-titles files) || .srt || &amp;lt;code&amp;gt;okf_regex-srt&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Tab-Delimiter files || .tsv, .txt || &amp;lt;code&amp;gt;okf_table_tsv&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Tex files || .tex || &amp;lt;code&amp;gt;okf_tex&amp;lt;/code&amp;gt; || [[TEX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[TMX]] || .tmx || &amp;lt;code&amp;gt;okf_tmx&amp;lt;/code&amp;gt; || [[TMX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Transifex project || .txp || &amp;lt;code&amp;gt;okf_transifex&amp;lt;/code&amp;gt; || [[Transifex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Trados-Tagged RTF || .rtf || &amp;lt;code&amp;gt;okf_tradosrtf&amp;lt;/code&amp;gt; || [[Trados-Tagged RTF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TS - Qt TS files || .ts || &amp;lt;code&amp;gt;okf_ts&amp;lt;/code&amp;gt; || [[TS Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TTX - Trados TagEditor TTX files || .ttx || &amp;lt;code&amp;gt;okf_ttx&amp;lt;/code&amp;gt; || [[TTX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TXML - Wordfast Pro TXML files || .txml || &amp;lt;code&amp;gt;okf_txml&amp;lt;/code&amp;gt; || [[TXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Vignette Export/Import Content || .xml || &amp;lt;code&amp;gt;okf_vignette&amp;lt;/code&amp;gt; || [[Vignette Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| WSXZ Package Filter || .wsxz || &amp;lt;code&amp;gt;okf_wsxzpackage&amp;lt;/code&amp;gt; || [[WSXZ Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XHTML || .html, .htm || &amp;lt;code&amp;gt;okf_html-wellFormed&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| WIX (Windows Installer XML) localization files || .wix || &amp;lt;code&amp;gt;okf_xml-WixLocalization&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[XLIFF]] v1.2 || .xlf, .xliff || &amp;lt;code&amp;gt;okf_xliff&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[XLIFF]] v2 || .xlf || &amp;lt;code&amp;gt;okf_xliff2&amp;lt;/code&amp;gt; || [[XLIFF-2 Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XML (Generic, using [[ITS]] defaults) || .xml || &amp;lt;code&amp;gt;okf_xml&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XML (Generic, using stream reader) || .xml || &amp;lt;code&amp;gt;okf_xmlstream&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| YAML (Generic YAML filter) || .yml, .yaml || &amp;lt;code&amp;gt;okf_yaml&amp;lt;/code&amp;gt; || [[YAML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Message Format (ICU Message Format Filter) || Any container format that supports subfilters || &amp;lt;code&amp;gt;okf_messageformat&amp;lt;/code&amp;gt; || [[Message Format Filter]] ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that most filters allow you to [[Understanding Filter Configurations|create your own configurations]] to support more file formats.&lt;br /&gt;
&lt;br /&gt;
==Code Simplification Rules==&lt;br /&gt;
&lt;br /&gt;
There are two levels of processing: filter and step. If possible, please always prefer the filter level, as the final merge may not always handle the applied code simplification of the step level correctly.&lt;br /&gt;
&lt;br /&gt;
By default, the [[Inline Codes Simplifier Step]], [[Simplification Filter]] and [[Post-segmentation Inline Codes Removal Step]] maximize the trimming and merging (aka simplification) of inline codes. In some cases, this may not be desired. So, the &amp;lt;code&amp;gt;moveLeadingAndTrailingCodesToSkeleton&amp;lt;/code&amp;gt; boolean parameter value set to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; can turn off the trimming and the &amp;lt;code&amp;gt;mergeAdjacentCodes&amp;lt;/code&amp;gt; - the merging. They are made optional for filters. This means that if they are not present (not mentioned) at the filter level, the specified step will take on the responsibility to handle them.&lt;br /&gt;
&lt;br /&gt;
Besides that, the simplification rules allow you to prevent specific codes from being trimmed or merged. &lt;br /&gt;
&lt;br /&gt;
===General Syntax===&lt;br /&gt;
&lt;br /&gt;
The rules parser ignores irrelevant whitespace. Rules can be separated by spaces, newlines or nothing. This makes it easier to accommodate various container formats and their whitespace normalization rules. When a rule applies, it means &amp;quot;do not simplify the match code&amp;quot;. Uppercase tokens are constants and predefined by the rule parser. Multiple rules are always OR'ed together.&lt;br /&gt;
&lt;br /&gt;
For more details see the JavaCC grammar: &amp;lt;code&amp;gt;../okapi/core/src/main/javacc/SimplifierRules.jj&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule Examples===&lt;br /&gt;
&lt;br /&gt;
If Code has any of these flags then don't simplify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DELETABLE or ADDABLE or CLONEABLE;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;=&amp;quot; is string match&lt;br /&gt;
Match basic TAGTYPE opening, closing or standalone &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA = &amp;quot;a&amp;quot; and TAGTYPE = OPENING;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;~&amp;quot; is regex match&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA ~ &amp;quot;a.*&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can negate any of the match operators &lt;br /&gt;
Don't simplify if the DATA does not match the regex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA !~ &amp;quot;a.*&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Match on type, linebreak in this case, don't simplify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;lb&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't simplify any rich text types&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;bold&amp;quot; or TYPE = &amp;quot;italic&amp;quot; or TYPE = &amp;quot;underline&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expressions can be recursive (supports embedded parens)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;bold&amp;quot; or (DATA = &amp;quot;bar&amp;quot; or (DATA = &amp;quot;foo&amp;quot; and TYPE = &amp;quot;underline&amp;quot;));&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===Filter Config Examples===&lt;br /&gt;
&lt;br /&gt;
Examples of using simplifier rules within the filter config formats used by Okapi.&lt;br /&gt;
&lt;br /&gt;
'''YAML:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
simplifierRules: |&lt;br /&gt;
  if ADDABLE or DELETABLE or CLONEABLE;&lt;br /&gt;
  if DATA = &amp;quot;&amp;lt;br/&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;font&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;/font&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
  if DATA ~ &amp;quot;\\&amp;lt;font.+&amp;quot; or DATA ~ &amp;quot;\\&amp;lt;img.+&amp;quot; or DATA ~ &amp;quot;\\&amp;lt;a.+&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ITS:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;its:rules xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot; version=&amp;quot;1.0&amp;quot; xmlns:itsx=&amp;quot;http://www.w3.org/2008/12/its-extensions&amp;quot; xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- See ITS specification at: http://www.w3.org/TR/its/ --&amp;gt;&lt;br /&gt;
 &amp;lt;its:translateRule selector=&amp;quot;//*&amp;quot; translate=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;its:withinTextRule selector=&amp;quot;//codeph&amp;quot; withinText=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;its:withinTextRule selector=&amp;quot;//ph&amp;quot; withinText=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;okp:simplifierRules moveLeadingAndTrailingCodesToSkeleton=&amp;quot;yes&amp;quot; mergeAdjacentCodes=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
 if ADDABLE or DELETABLE or CLONEABLE; if DATA ~ &amp;quot;.+&amp;quot;;&lt;br /&gt;
 &amp;lt;/okp:simplifierRules&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''FPRM (Parameters):'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#v1&lt;br /&gt;
extractNotes.b=true&lt;br /&gt;
simplifierRules=if ADDABLE or DELETABLE or CLONEABLE; if DATA ~ &amp;quot;.+&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Font Mapping==&lt;br /&gt;
&lt;br /&gt;
The font mapping can be considered as a filter's ability to automatically substitute font information in the target document on the fly, according to a provided configuration - this helps to reduce the amount of reformatting and post-translation DTP. It is supported by IDML and OpenXML (DOCX, PPTX and XLSX documents) filters at the moment.&lt;br /&gt;
&lt;br /&gt;
The following font mapping configuration options are available:&lt;br /&gt;
* The source locale regular expression pattern: &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;en.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;en-UK&amp;lt;/code&amp;gt;, etc. It can be ommited to apply the mapping to any source locale.&lt;br /&gt;
* The target locale regular expression pattern: &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ru.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ru-RU&amp;lt;/code&amp;gt;, etc. It can be ommited to apply the mapping to any target locale.&lt;br /&gt;
* The source font name regular expression pattern: &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Arial.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;, etc. It can be ommited to apply the mapping to any source font name found.&lt;br /&gt;
* The target font name: &amp;lt;code&amp;gt;Arial&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;, etc. It should not be empty. And if it is made so, the mapping configuration is ignored.&lt;br /&gt;
&lt;br /&gt;
Also, the configured font mappings are applied in the order they are stated. And the final target font value is determined by a sequential&lt;br /&gt;
substitution of the source font values. I.e. if there is more than one mapping:&lt;br /&gt;
# &amp;lt;code&amp;gt;Arial&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Sans Serif&amp;lt;/code&amp;gt;&lt;br /&gt;
then the first mapping will produce &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt; replacement and the second one will be applied to this new value, thus, ending up with the &amp;lt;code&amp;gt;Sans Serif&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters serialisation format can look like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.sourceLocalePattern=en.*&lt;br /&gt;
fontMappings.0.targetLocalePattern=ru.*&lt;br /&gt;
fontMappings.0.sourceFontPattern=Times.*&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.1.sourceLocalePattern=ru&lt;br /&gt;
fontMappings.1.targetLocalePattern=fr&lt;br /&gt;
fontMappings.1.sourceFontPattern=The Sims Sans&lt;br /&gt;
fontMappings.1.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When source locale, target locale and source font are omitted:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And this is the same as the abovementioned:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.sourceLocalePattern=.*&lt;br /&gt;
fontMappings.0.targetLocalePattern=.*&lt;br /&gt;
fontMappings.0.sourceFontPattern=.*&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1044</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1044"/>
		<updated>2025-09-19T18:06:54Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* PowerPoint Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, it exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, it exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
; Preserve ACSII and HighAnsi Font Categories On Detection&lt;br /&gt;
: When checked, the mentioned run font categories are preserved on the merge of consequential runs.  Default: off.&lt;br /&gt;
; Remove Embedded Excel Package&lt;br /&gt;
: When checked and either cached chart strings or numbers are also set for extraction, the embedded Excel package is removed, and any references to it in chart parts and related relationships are removed as well.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Translate Graphic Name&lt;br /&gt;
: When checked, @name attribute values associated with drawings and word art are exposed for translation. Default: on.&lt;br /&gt;
; Translate Graphic Description&lt;br /&gt;
: When checked, @descr attribute values associated with drawings and word art are exposed for translation. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. &lt;br /&gt;
* If the switch is set to &amp;quot;Include&amp;quot;, only text in the specified colors will be extracted for translation.&lt;br /&gt;
* If the switch is set to &amp;quot;Exclude&amp;quot;, all content &amp;lt;b&amp;gt;except&amp;lt;/b&amp;gt; for text in the specified colors will be extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Note&amp;lt;/i&amp;gt;: Text that is excluded using this mechanism will be treated as hidden; that means the &amp;quot;Translate Everything Hidden&amp;quot; options will extract it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Note&amp;lt;/i&amp;gt;: Starting in 1.48.0, this option also applies to content in PowerPoint files.&lt;br /&gt;
&lt;br /&gt;
Default: the switch is set to &amp;quot;Exclude&amp;quot; and no colors are selected, meaning that all visible content will be extracted for translation.&lt;br /&gt;
&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground or background color matching any of the selected colors in this option will be excluded from translation.  Default: none.&lt;br /&gt;
:* The named colors available in the UI correspond to the standard color palette of Excel 2010.  &lt;br /&gt;
:* The configuration itself also supports colors specified as RGB in the format &amp;lt;code&amp;gt;RRGGBB&amp;lt;/code&amp;gt;, so specific colors not explicitly listed in the UI may be excluded by modifying the .fprm file by hand.  For example, to exclude #69b3e7 (Pantone 292), you could modify the &amp;lt;code&amp;gt;tsExcelExcludedColors&amp;lt;/code&amp;gt; section of the configuration file like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tsExcelExcludedColors.i=1&lt;br /&gt;
ccc0=69b3e7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Extract Source And Target Columns Joined&lt;br /&gt;
: When checked, the source and target columns (cells in a row) are joined on extraction.  Default: off.&lt;br /&gt;
; Extract Worksheets Explicitly Specified&lt;br /&gt;
: When checked, only worksheets that match their names in the Worksheet Configurations are exposed for extraction.  Default: off.&lt;br /&gt;
; Extract Cells Explicitly Specified&lt;br /&gt;
: When checked, only cells specified in the Worksheet Configurations are exposed for extraction. The explicitly mentioned source and target columns are eligible for such handling. Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration, it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options, please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns Max Characters - a list of decimal unsigned integers [0, 2^32]. When specified, the maxwidth and size-unit properties are attached to text units specified in the target columns. E.g.: &amp;lt;code&amp;gt;25,30&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Name&lt;br /&gt;
: When checked, @name attribute values associated with drawings and word art are exposed for translation. Default: on.&lt;br /&gt;
; Translate Graphic Description&lt;br /&gt;
: When checked, @descr attribute values associated with drawings and word art are exposed for translation. Default: off.&lt;br /&gt;
; Translate Cached Chart Strings&lt;br /&gt;
: When checked, the cached chart strings are exposed for translation. Default: off.&lt;br /&gt;
; Translate Cached Chart Numbers&lt;br /&gt;
: When checked, the cached chart numbers and format codes are exposed for translation. Default: off.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Starting in 1.48.0, the &amp;quot;Excluded/Included Highlight Colors&amp;quot; option from the Word configuration also affects PowerPoint content. See the docs in [[#Word Options]].&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1043</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1043"/>
		<updated>2025-09-19T18:04:43Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* General Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, it exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, it exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
; Preserve ACSII and HighAnsi Font Categories On Detection&lt;br /&gt;
: When checked, the mentioned run font categories are preserved on the merge of consequential runs.  Default: off.&lt;br /&gt;
; Remove Embedded Excel Package&lt;br /&gt;
: When checked and either cached chart strings or numbers are also set for extraction, the embedded Excel package is removed, and any references to it in chart parts and related relationships are removed as well.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Translate Graphic Name&lt;br /&gt;
: When checked, @name attribute values associated with drawings and word art are exposed for translation. Default: on.&lt;br /&gt;
; Translate Graphic Description&lt;br /&gt;
: When checked, @descr attribute values associated with drawings and word art are exposed for translation. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. &lt;br /&gt;
* If the switch is set to &amp;quot;Include&amp;quot;, only text in the specified colors will be extracted for translation.&lt;br /&gt;
* If the switch is set to &amp;quot;Exclude&amp;quot;, all content &amp;lt;b&amp;gt;except&amp;lt;/b&amp;gt; for text in the specified colors will be extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Note&amp;lt;/i&amp;gt;: Text that is excluded using this mechanism will be treated as hidden; that means the &amp;quot;Translate Everything Hidden&amp;quot; options will extract it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Note&amp;lt;/i&amp;gt;: Starting in 1.48.0, this option also applies to content in PowerPoint files.&lt;br /&gt;
&lt;br /&gt;
Default: the switch is set to &amp;quot;Exclude&amp;quot; and no colors are selected, meaning that all visible content will be extracted for translation.&lt;br /&gt;
&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground or background color matching any of the selected colors in this option will be excluded from translation.  Default: none.&lt;br /&gt;
:* The named colors available in the UI correspond to the standard color palette of Excel 2010.  &lt;br /&gt;
:* The configuration itself also supports colors specified as RGB in the format &amp;lt;code&amp;gt;RRGGBB&amp;lt;/code&amp;gt;, so specific colors not explicitly listed in the UI may be excluded by modifying the .fprm file by hand.  For example, to exclude #69b3e7 (Pantone 292), you could modify the &amp;lt;code&amp;gt;tsExcelExcludedColors&amp;lt;/code&amp;gt; section of the configuration file like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tsExcelExcludedColors.i=1&lt;br /&gt;
ccc0=69b3e7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Extract Source And Target Columns Joined&lt;br /&gt;
: When checked, the source and target columns (cells in a row) are joined on extraction.  Default: off.&lt;br /&gt;
; Extract Worksheets Explicitly Specified&lt;br /&gt;
: When checked, only worksheets that match their names in the Worksheet Configurations are exposed for extraction.  Default: off.&lt;br /&gt;
; Extract Cells Explicitly Specified&lt;br /&gt;
: When checked, only cells specified in the Worksheet Configurations are exposed for extraction. The explicitly mentioned source and target columns are eligible for such handling. Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration, it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options, please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns Max Characters - a list of decimal unsigned integers [0, 2^32]. When specified, the maxwidth and size-unit properties are attached to text units specified in the target columns. E.g.: &amp;lt;code&amp;gt;25,30&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Name&lt;br /&gt;
: When checked, @name attribute values associated with drawings and word art are exposed for translation. Default: on.&lt;br /&gt;
; Translate Graphic Description&lt;br /&gt;
: When checked, @descr attribute values associated with drawings and word art are exposed for translation. Default: off.&lt;br /&gt;
; Translate Cached Chart Strings&lt;br /&gt;
: When checked, the cached chart strings are exposed for translation. Default: off.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Starting in 1.48.0, the &amp;quot;Excluded/Included Highlight Colors&amp;quot; option from the Word configuration also affects PowerPoint content. See the docs in [[#Word Options]].&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1042</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1042"/>
		<updated>2025-09-19T18:04:01Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* General Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, it exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, it exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
; Preserve ACSII and HighAnsi Font Categories On Detection&lt;br /&gt;
: When checked, the mentioned run font categories are preserved on the merge of consequential runs.  Default: off.&lt;br /&gt;
; Removed Embedded Excel Package&lt;br /&gt;
: When checked and either cached chart strings or numbers are also set for extraction, the embedded Excel package is removed, and any references to it in chart parts and related relationships are removed as well.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Translate Graphic Name&lt;br /&gt;
: When checked, @name attribute values associated with drawings and word art are exposed for translation. Default: on.&lt;br /&gt;
; Translate Graphic Description&lt;br /&gt;
: When checked, @descr attribute values associated with drawings and word art are exposed for translation. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. &lt;br /&gt;
* If the switch is set to &amp;quot;Include&amp;quot;, only text in the specified colors will be extracted for translation.&lt;br /&gt;
* If the switch is set to &amp;quot;Exclude&amp;quot;, all content &amp;lt;b&amp;gt;except&amp;lt;/b&amp;gt; for text in the specified colors will be extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Note&amp;lt;/i&amp;gt;: Text that is excluded using this mechanism will be treated as hidden; that means the &amp;quot;Translate Everything Hidden&amp;quot; options will extract it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Note&amp;lt;/i&amp;gt;: Starting in 1.48.0, this option also applies to content in PowerPoint files.&lt;br /&gt;
&lt;br /&gt;
Default: the switch is set to &amp;quot;Exclude&amp;quot; and no colors are selected, meaning that all visible content will be extracted for translation.&lt;br /&gt;
&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground or background color matching any of the selected colors in this option will be excluded from translation.  Default: none.&lt;br /&gt;
:* The named colors available in the UI correspond to the standard color palette of Excel 2010.  &lt;br /&gt;
:* The configuration itself also supports colors specified as RGB in the format &amp;lt;code&amp;gt;RRGGBB&amp;lt;/code&amp;gt;, so specific colors not explicitly listed in the UI may be excluded by modifying the .fprm file by hand.  For example, to exclude #69b3e7 (Pantone 292), you could modify the &amp;lt;code&amp;gt;tsExcelExcludedColors&amp;lt;/code&amp;gt; section of the configuration file like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tsExcelExcludedColors.i=1&lt;br /&gt;
ccc0=69b3e7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Extract Source And Target Columns Joined&lt;br /&gt;
: When checked, the source and target columns (cells in a row) are joined on extraction.  Default: off.&lt;br /&gt;
; Extract Worksheets Explicitly Specified&lt;br /&gt;
: When checked, only worksheets that match their names in the Worksheet Configurations are exposed for extraction.  Default: off.&lt;br /&gt;
; Extract Cells Explicitly Specified&lt;br /&gt;
: When checked, only cells specified in the Worksheet Configurations are exposed for extraction. The explicitly mentioned source and target columns are eligible for such handling. Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration, it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options, please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns Max Characters - a list of decimal unsigned integers [0, 2^32]. When specified, the maxwidth and size-unit properties are attached to text units specified in the target columns. E.g.: &amp;lt;code&amp;gt;25,30&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Name&lt;br /&gt;
: When checked, @name attribute values associated with drawings and word art are exposed for translation. Default: on.&lt;br /&gt;
; Translate Graphic Description&lt;br /&gt;
: When checked, @descr attribute values associated with drawings and word art are exposed for translation. Default: off.&lt;br /&gt;
; Translate Cached Chart Strings&lt;br /&gt;
: When checked, the cached chart strings are exposed for translation. Default: off.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Starting in 1.48.0, the &amp;quot;Excluded/Included Highlight Colors&amp;quot; option from the Word configuration also affects PowerPoint content. See the docs in [[#Word Options]].&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1041</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1041"/>
		<updated>2025-09-18T03:05:50Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
; Preserve ACSII and HighAnsi Font Categories On Detection&lt;br /&gt;
: When checked, the mentioned run font categories are preserved on the merge of consequential runs.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Translate Graphic Name&lt;br /&gt;
: When checked, @name attribute values associated with drawings and word art are exposed for translation. Default: on.&lt;br /&gt;
; Translate Graphic Description&lt;br /&gt;
: When checked, @descr attribute values associated with drawings and word art are exposed for translation. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. &lt;br /&gt;
* If the switch is set to &amp;quot;Include&amp;quot;, only text in the specified colors will be extracted for translation.&lt;br /&gt;
* If the switch is set to &amp;quot;Exclude&amp;quot;, all content &amp;lt;b&amp;gt;except&amp;lt;/b&amp;gt; for text in the specified colors will be extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Note&amp;lt;/i&amp;gt;: Text that is excluded using this mechanism will be treated as hidden; that means the &amp;quot;Translate Everything Hidden&amp;quot; options will extract it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Note&amp;lt;/i&amp;gt;: Starting in 1.48.0, this option also applies to content in PowerPoint files.&lt;br /&gt;
&lt;br /&gt;
Default: the switch is set to &amp;quot;Exclude&amp;quot; and no colors are selected, meaning that all visible content will be extracted for translation.&lt;br /&gt;
&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground or background color matching any of the selected colors in this option will be excluded from translation.  Default: none.&lt;br /&gt;
:* The named colors available in the UI correspond to the standard color palette of Excel 2010.  &lt;br /&gt;
:* The configuration itself also supports colors specified as RGB in the format &amp;lt;code&amp;gt;RRGGBB&amp;lt;/code&amp;gt;, so specific colors not explicitly listed in the UI may be excluded by modifying the .fprm file by hand.  For example, to exclude #69b3e7 (Pantone 292), you could modify the &amp;lt;code&amp;gt;tsExcelExcludedColors&amp;lt;/code&amp;gt; section of the configuration file like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tsExcelExcludedColors.i=1&lt;br /&gt;
ccc0=69b3e7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Extract Source And Target Columns Joined&lt;br /&gt;
: When checked, the source and target columns (cells in a row) are joined on extraction.  Default: off.&lt;br /&gt;
; Extract Worksheets Explicitly Specified&lt;br /&gt;
: When checked, only worksheets that match their names in the Worksheet Configurations are exposed for extraction.  Default: off.&lt;br /&gt;
; Extract Cells Explicitly Specified&lt;br /&gt;
: When checked, only cells specified in the Worksheet Configurations are exposed for extraction. The explicitly mentioned source and target columns are eligible for such handling. Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration, it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options, please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns Max Characters - a list of decimal unsigned integers [0, 2^32]. When specified, the maxwidth and size-unit properties are attached to text units specified in the target columns. E.g.: &amp;lt;code&amp;gt;25,30&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Name&lt;br /&gt;
: When checked, @name attribute values associated with drawings and word art are exposed for translation. Default: on.&lt;br /&gt;
; Translate Graphic Description&lt;br /&gt;
: When checked, @descr attribute values associated with drawings and word art are exposed for translation. Default: off.&lt;br /&gt;
; Translate Cached Chart Strings&lt;br /&gt;
: When checked, the cached chart strings are exposed for translation. Default: off.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Starting in 1.48.0, the &amp;quot;Excluded/Included Highlight Colors&amp;quot; option from the Word configuration also affects PowerPoint content. See the docs in [[#Word Options]].&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1040</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1040"/>
		<updated>2025-09-18T03:04:21Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
; Preserve ACSII and HighAnsi Font Categories On Detection&lt;br /&gt;
: When checked, the mentioned run font categories are preserved on the merge of consequential runs.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Translate Graphic Name&lt;br /&gt;
: When checked, @name attribute values associated with drawings and word art are exposed for translation. Default: on.&lt;br /&gt;
; Translate Graphic Description&lt;br /&gt;
: When checked, @descr attribute values associated with drawings and word art are exposed for translation. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. &lt;br /&gt;
* If the switch is set to &amp;quot;Include&amp;quot;, only text in the specified colors will be extracted for translation.&lt;br /&gt;
* If the switch is set to &amp;quot;Exclude&amp;quot;, all content &amp;lt;b&amp;gt;except&amp;lt;/b&amp;gt; for text in the specified colors will be extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Note&amp;lt;/i&amp;gt;: Text that is excluded using this mechanism will be treated as hidden; that means the &amp;quot;Translate Everything Hidden&amp;quot; options will extract it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Note&amp;lt;/i&amp;gt;: Starting in 1.48.0, this option also applies to content in PowerPoint files.&lt;br /&gt;
&lt;br /&gt;
Default: the switch is set to &amp;quot;Exclude&amp;quot; and no colors are selected, meaning that all visible content will be extracted for translation.&lt;br /&gt;
&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground or background color matching any of the selected colors in this option will be excluded from translation.  Default: none.&lt;br /&gt;
:* The named colors available in the UI correspond to the standard color palette of Excel 2010.  &lt;br /&gt;
:* The configuration itself also supports colors specified as RGB in the format &amp;lt;code&amp;gt;RRGGBB&amp;lt;/code&amp;gt;, so specific colors not explicitly listed in the UI may be excluded by modifying the .fprm file by hand.  For example, to exclude #69b3e7 (Pantone 292), you could modify the &amp;lt;code&amp;gt;tsExcelExcludedColors&amp;lt;/code&amp;gt; section of the configuration file like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tsExcelExcludedColors.i=1&lt;br /&gt;
ccc0=69b3e7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Extract Source And Target Columns Joined&lt;br /&gt;
: When checked, the source and target columns (cells in a row) are joined on extraction.  Default: off.&lt;br /&gt;
; Extract Worksheets Explicitly Specified&lt;br /&gt;
: When checked, only worksheets that match their names in the Worksheet Configurations are exposed for extraction.  Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
; Extract Cells Explicitly Specified&lt;br /&gt;
: When checked, only cells specified in the Worksheet Configurations are exposed for extraction. The explicitly mentioned source and target columns are eligible for such handling. Default: off.&lt;br /&gt;
: For one configuration, it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options, please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns Max Characters - a list of decimal unsigned integers [0, 2^32]. When specified, the maxwidth and size-unit properties are attached to text units specified in the target columns. E.g.: &amp;lt;code&amp;gt;25,30&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Name&lt;br /&gt;
: When checked, @name attribute values associated with drawings and word art are exposed for translation. Default: on.&lt;br /&gt;
; Translate Graphic Description&lt;br /&gt;
: When checked, @descr attribute values associated with drawings and word art are exposed for translation. Default: off.&lt;br /&gt;
; Translate Cached Chart Strings&lt;br /&gt;
: When checked, the cached chart strings are exposed for translation. Default: off.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Starting in 1.48.0, the &amp;quot;Excluded/Included Highlight Colors&amp;quot; option from the Word configuration also affects PowerPoint content. See the docs in [[#Word Options]].&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=1039</id>
		<title>IDML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=1039"/>
		<updated>2025-08-25T20:38:57Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process IDML documents. IDML (InDesign Markup Language) is an XML-based format, introduced in Adobe InDesign CS4, for representing InDesign content. IDML is used in several InDesign and InCopy file types. The specification can be found [http://www.adobe.com/content/dam/Adobe/en/devnet/indesign/cs5_docs/idml/idml-specification.pdf on the Adobe Web site].&lt;br /&gt;
&lt;br /&gt;
==Processing Details==&lt;br /&gt;
&lt;br /&gt;
When processing an IDML filter, the filter looks at all the spreads in the document, and for each of them, gather the list of the stories used in &amp;lt;code&amp;gt;&amp;amp;lt;TextFrame&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;TextPath&amp;gt;&amp;lt;/code&amp;gt;. The text is extracted by spread, and for each spread by story in the order the appear in the spread.&lt;br /&gt;
&lt;br /&gt;
Stories embedded inside other stories and not declared at a spread level are extracted in a special group.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum attribute size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the size in MB for the attribute buffer. The default is 4MB (4 * 1024 * 1024)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Special character pattern&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is &amp;quot;&amp;lt;code&amp;gt; | | | | | | | | | |​|‌|­|‑|﻿&amp;lt;/code&amp;gt;&amp;quot;). A matched content is treated as inline code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Untag XML Structures&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to skip embedded XML structural information when extracting translatable content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Merge Adjacent Codes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to merge inline adjacent codes. (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract notes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of notes (&amp;lt;code&amp;gt;&amp;amp;lt;Note&amp;gt;&amp;lt;/code&amp;gt; elements).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract master spreads&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of the master spreads if they exist. If this option is not set only the normal spreads are extracted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden layers&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract also the hidden layers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden pasteboard items&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Skip discretionary hyphens&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract breaks inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hyperlink text sources inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set to true, the hyperlink text sources are extracted inline, otherwise, they are represented as referencing groups of textual units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract custom text variables&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract index topics&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract external hyperlinks&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set to true, the external hyperlinks are extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract Math Zones&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is true). When it is set to true, the math zones are extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Excluded Styles&amp;lt;/cite&amp;gt; &amp;amp;mdash; Content with the specified styles is excluded from extraction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character kerning&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character tracking&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character leading&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character baseline shift&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
==Deprecated Parameters==&lt;br /&gt;
&lt;br /&gt;
Prior to release M34, the filter supported several additional parameters.  The behavior of these has been subsumed by the more intelligent content processing performed by the updated version of the filter in versions M34 and later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Simplify inline codes when possible&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to reduce the number of inline codes by re-grouping adjacent codes when it is possible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Create new text units on hard returns&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to create separate text units when a hard return element (&amp;lt;code&amp;gt;&amp;amp;lt;Br/&amp;gt;&amp;lt;/code&amp;gt;) is found.&amp;lt;br/&amp;gt; '''IMPORTANT: This option is not completed yet. Setting it may create extracted documents you will not be able to merge back. Always test merge before use this for production.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the maximum size for the spread files (in KBytes). Any spread file above the given value will either generate an error or will be skipped from extraction depending on the specified option. This allows you to skip over large spread files that may contain only graphics and require too much memory to be opened. Note that the skipped file are not checked for translatable text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Generate an error when a spread is larger than the specified value&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to generate an error if a spread size is above the specified &amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt;. If this option is not set, the spread is skipped with a warning message.&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=1038</id>
		<title>IDML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=1038"/>
		<updated>2025-08-25T20:37:30Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process IDML documents. IDML (InDesign Markup Language) is an XML-based format, introduced in Adobe InDesign CS4, for representing InDesign content. IDML is used in several InDesign and InCopy file types. The specification can be found [http://www.adobe.com/content/dam/Adobe/en/devnet/indesign/cs5_docs/idml/idml-specification.pdf on the Adobe Web site].&lt;br /&gt;
&lt;br /&gt;
==Processing Details==&lt;br /&gt;
&lt;br /&gt;
When processing an IDML filter, the filter looks at all the spreads in the document, and for each of them, gather the list of the stories used in &amp;lt;code&amp;gt;&amp;amp;lt;TextFrame&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;TextPath&amp;gt;&amp;lt;/code&amp;gt;. The text is extracted by spread, and for each spread by story in the order the appear in the spread.&lt;br /&gt;
&lt;br /&gt;
Stories embedded inside other stories and not declared at a spread level are extracted in a special group.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum attribute size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the size in MB for the attribute buffer. The default is 4MB (4 * 1024 * 1024)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Special character pattern&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is &amp;quot;&amp;lt;code&amp;gt; | | | | | | | | | |​|‌|­|‑|﻿&amp;lt;/code&amp;gt;&amp;quot;). A matched content is treated as inline code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Untag XML Structures&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to skip embedded XML structural information when extracting translatable content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Merge Adjacent Codes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to merge inline adjacent codes. (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract notes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of notes (&amp;lt;code&amp;gt;&amp;amp;lt;Note&amp;gt;&amp;lt;/code&amp;gt; elements).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract master spreads&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of the master spreads if they exist. If this option is not set only the normal spreads are extracted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden layers&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract also the hidden layers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden pasteboard items&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Skip discretionary hyphens&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract breaks inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hyperlink text sources inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set to true, the hyperlink text sources are extracted inline, otherwise, they are represented as referencing groups of textual units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract custom text variables&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract index topics&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract external hyperlinks&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set to true, the external hyperlinks are extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract Math Zones&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is true). When it is set to true, the math zones are extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Excluded Styles&amp;lt;/cite&amp;gt; &amp;amp;mdash; The specified styles are excluded from extraction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character kerning&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character tracking&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character leading&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character baseline shift&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
==Deprecated Parameters==&lt;br /&gt;
&lt;br /&gt;
Prior to release M34, the filter supported several additional parameters.  The behavior of these has been subsumed by the more intelligent content processing performed by the updated version of the filter in versions M34 and later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Simplify inline codes when possible&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to reduce the number of inline codes by re-grouping adjacent codes when it is possible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Create new text units on hard returns&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to create separate text units when a hard return element (&amp;lt;code&amp;gt;&amp;amp;lt;Br/&amp;gt;&amp;lt;/code&amp;gt;) is found.&amp;lt;br/&amp;gt; '''IMPORTANT: This option is not completed yet. Setting it may create extracted documents you will not be able to merge back. Always test merge before use this for production.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the maximum size for the spread files (in KBytes). Any spread file above the given value will either generate an error or will be skipped from extraction depending on the specified option. This allows you to skip over large spread files that may contain only graphics and require too much memory to be opened. Note that the skipped file are not checked for translatable text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Generate an error when a spread is larger than the specified value&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to generate an error if a spread size is above the specified &amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt;. If this option is not set, the spread is skipped with a warning message.&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=1037</id>
		<title>IDML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=1037"/>
		<updated>2025-08-25T20:36:00Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process IDML documents. IDML (InDesign Markup Language) is an XML-based format, introduced in Adobe InDesign CS4, for representing InDesign content. IDML is used in several InDesign and InCopy file types. The specification can be found [http://www.adobe.com/content/dam/Adobe/en/devnet/indesign/cs5_docs/idml/idml-specification.pdf on the Adobe Web site].&lt;br /&gt;
&lt;br /&gt;
==Processing Details==&lt;br /&gt;
&lt;br /&gt;
When processing an IDML filter, the filter looks at all the spreads in the document, and for each of them, gather the list of the stories used in &amp;lt;code&amp;gt;&amp;amp;lt;TextFrame&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;TextPath&amp;gt;&amp;lt;/code&amp;gt;. The text is extracted by spread, and for each spread by story in the order the appear in the spread.&lt;br /&gt;
&lt;br /&gt;
Stories embedded inside other stories and not declared at a spread level are extracted in a special group.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum attribute size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the size in MB for the attribute buffer. The default is 4MB (4 * 1024 * 1024)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Special character pattern&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is &amp;quot;&amp;lt;code&amp;gt; | | | | | | | | | |​|‌|­|‑|﻿&amp;lt;/code&amp;gt;&amp;quot;). A matched content is treated as inline code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Untag XML Structures&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to skip embedded XML structural information when extracting translatable content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Merge Adjacent Codes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to merge inline adjacent codes. (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract notes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of notes (&amp;lt;code&amp;gt;&amp;amp;lt;Note&amp;gt;&amp;lt;/code&amp;gt; elements).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract master spreads&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of the master spreads if they exist. If this option is not set only the normal spreads are extracted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden layers&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract also the hidden layers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden pasteboard items&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Skip discretionary hyphens&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract breaks inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hyperlink text sources inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set to true, the hyperlink text sources are extracted inline, otherwise, they are represented as referencing groups of textual units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract custom text variables&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract index topics&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract external hyperlinks&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set to true, the external hyperlinks are extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract Math Zones&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is true). When it is set to true, the math zones are extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Excluded Styles&amp;lt;/cite&amp;gt; &amp;amp;mdash; It is possible to add, remove or edit the excluded for extraction styles. The specified styles are excluded from extraction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character kerning&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character tracking&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character leading&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character baseline shift&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
==Deprecated Parameters==&lt;br /&gt;
&lt;br /&gt;
Prior to release M34, the filter supported several additional parameters.  The behavior of these has been subsumed by the more intelligent content processing performed by the updated version of the filter in versions M34 and later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Simplify inline codes when possible&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to reduce the number of inline codes by re-grouping adjacent codes when it is possible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Create new text units on hard returns&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to create separate text units when a hard return element (&amp;lt;code&amp;gt;&amp;amp;lt;Br/&amp;gt;&amp;lt;/code&amp;gt;) is found.&amp;lt;br/&amp;gt; '''IMPORTANT: This option is not completed yet. Setting it may create extracted documents you will not be able to merge back. Always test merge before use this for production.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the maximum size for the spread files (in KBytes). Any spread file above the given value will either generate an error or will be skipped from extraction depending on the specified option. This allows you to skip over large spread files that may contain only graphics and require too much memory to be opened. Note that the skipped file are not checked for translatable text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Generate an error when a spread is larger than the specified value&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to generate an error if a spread size is above the specified &amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt;. If this option is not set, the spread is skipped with a warning message.&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1036</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1036"/>
		<updated>2025-08-25T20:20:02Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
; Preserve ACSII and HighAnsi Font Categories On Detection&lt;br /&gt;
: When checked, the mentioned run font categories are preserved on the merge of consequential runs.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Translate Graphic Name&lt;br /&gt;
: When checked, @name attribute values associated with drawings and word art are exposed for translation. Default: on.&lt;br /&gt;
; Translate Graphic Description&lt;br /&gt;
: When checked, @descr attribute values associated with drawings and word art are exposed for translation. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. &lt;br /&gt;
* If the switch is set to &amp;quot;Include&amp;quot;, only text in the specified colors will be extracted for translation.&lt;br /&gt;
* If the switch is set to &amp;quot;Exclude&amp;quot;, all content &amp;lt;b&amp;gt;except&amp;lt;/b&amp;gt; for text in the specified colors will be extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Note&amp;lt;/i&amp;gt;: Text that is excluded using this mechanism will be treated as hidden; that means the &amp;quot;Translate Everything Hidden&amp;quot; options will extract it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Note&amp;lt;/i&amp;gt;: Starting in 1.48.0, this option also applies to content in PowerPoint files.&lt;br /&gt;
&lt;br /&gt;
Default: the switch is set to &amp;quot;Exclude&amp;quot; and no colors are selected, meaning that all visible content will be extracted for translation.&lt;br /&gt;
&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground or background color matching any of the selected colors in this option will be excluded from translation.  Default: none.&lt;br /&gt;
:* The named colors available in the UI correspond to the standard color palette of Excel 2010.  &lt;br /&gt;
:* The configuration itself also supports colors specified as RGB in the format &amp;lt;code&amp;gt;RRGGBB&amp;lt;/code&amp;gt;, so specific colors not explicitly listed in the UI may be excluded by modifying the .fprm file by hand.  For example, to exclude #69b3e7 (Pantone 292), you could modify the &amp;lt;code&amp;gt;tsExcelExcludedColors&amp;lt;/code&amp;gt; section of the configuration file like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tsExcelExcludedColors.i=1&lt;br /&gt;
ccc0=69b3e7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Extract Source And Target Columns Joined&lt;br /&gt;
: When checked, the source and target columns (cells in a row) are joined on extraction.  Default: off.&lt;br /&gt;
; Extract Worksheets Explicitly Specified&lt;br /&gt;
: When checked, only worksheets that match their names in the Worksheet Configurations are exposed for extraction.  Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration, it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns Max Characters - a list of decimal unsigned integers [0, 2^32]. When specified, the maxwidth and size-unit properties are attached to text units specified in the target columns. E.g.: &amp;lt;code&amp;gt;25,30&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Name&lt;br /&gt;
: When checked, @name attribute values associated with drawings and word art are exposed for translation. Default: on.&lt;br /&gt;
; Translate Graphic Description&lt;br /&gt;
: When checked, @descr attribute values associated with drawings and word art are exposed for translation. Default: off.&lt;br /&gt;
; Translate Cached Chart Strings&lt;br /&gt;
: When checked, the cached chart strings are exposed for translation. Default: off.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Starting in 1.48.0, the &amp;quot;Excluded/Included Highlight Colors&amp;quot; option from the Word configuration also affects PowerPoint content. See the docs in [[#Word Options]].&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1027</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1027"/>
		<updated>2025-03-07T16:44:57Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Extract Source And Target Columns Joined&lt;br /&gt;
: When checked, the source and target columns (cells in a row) are joined on extraction.  Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns Max Characters - a list of decimal unsigned integers [0, 2^32]. When specified, the maxwidth and size-unit properties are attached to text units specified in the target columns. E.g.: &amp;lt;code&amp;gt;25,30&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Metadata&lt;br /&gt;
: When checked, the graphic metadata (@name and @descr attribute values) are exposed for translation. Default: off.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1023</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1023"/>
		<updated>2025-02-03T16:00:11Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns Max Characters - a list of decimal unsigned integers [0, 2^32]. When specified, the maxwidth and size-unit properties are attached to text units specified in the target columns. E.g.: &amp;lt;code&amp;gt;25,30&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Metadata&lt;br /&gt;
: When checked, the graphic metadata (@name and @descr attribute values) are exposed for translation. Default: off.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1022</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1022"/>
		<updated>2025-01-15T14:33:12Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Max Characters - decimal unsigned integer [0, 2^32] or an empty string. When specified, the maxwidth and size-unit properties are attached to text units. Default: empty string. E.g.: &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Metadata&lt;br /&gt;
: When checked, the graphic metadata (@name and @descr attribute values) are exposed for translation. Default: off.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1021</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1021"/>
		<updated>2025-01-15T14:32:16Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Max Characters - decimal unsigned integer [0, 2^32] or an empty string. When specified, the maxwidth and size-unit properties are attached to text units. E.g.: &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Metadata&lt;br /&gt;
: When checked, the graphic metadata (@name and @descr attribute values) are exposed for translation. Default: off.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1020</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1020"/>
		<updated>2025-01-15T14:31:46Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Max Characters - decimal unsigned integer [0, 2^32] or an empty string. When specified, the maxwidth and size-unit properties are attached to text units. E.g.: &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Metadata&lt;br /&gt;
: When checked, the graphic metadata (@name and @descr attribute values) are exposed for translation. Default: off.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1019</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1019"/>
		<updated>2025-01-15T14:31:09Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Max Characters - positive decimal unsigned integer [0, 2^32] or an empty string. When specified, the maxwidth and size-unit properties are attached to text units. E.g.: &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Metadata&lt;br /&gt;
: When checked, the graphic metadata (@name and @descr attribute values) are exposed for translation. Default: off.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1018</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1018"/>
		<updated>2025-01-14T13:45:44Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Max Characters - positive decimal integer [0, 2^31-1] or an empty string, which means that the limitation is not applied. Note: it works for plain text only, inline styles are not supported.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Metadata&lt;br /&gt;
: When checked, the graphic metadata (@name and @descr attribute values) are exposed for translation. Default: off.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1015</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1015"/>
		<updated>2024-11-29T15:04:03Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* PowerPoint Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
; Translate Graphic Metadata&lt;br /&gt;
: When checked, the graphic metadata (@name and @descr attribute values) are exposed for translation. Default: off.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1014</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1014"/>
		<updated>2024-11-29T14:56:13Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* General Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
; Ignore Whitespace Styles&lt;br /&gt;
: When checked under the &amp;quot;Clean Tags Aggressively&amp;quot;, the whitespace character styles (formatting) are ignored and considered equal to the consequential ones.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1006</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1006"/>
		<updated>2024-10-02T14:51:20Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Preserve Styles In Target Columns&lt;br /&gt;
: When checked, the cell styles in target columns are preserved.  Default: off.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1005</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=1005"/>
		<updated>2024-07-03T15:57:39Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Word Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
; Allow Style Optimisation&lt;br /&gt;
: When checked, the optimisation of styles is allowed - common formatting of all runs in a paragraph is moved to the styles part. Default: on.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=997</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=997"/>
		<updated>2023-12-27T09:37:26Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Source Columns - a list of ALPHA-26 numbers, specifying columns that are copied over the target ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Target Columns - a list of ALPHA-26 numbers, specifying columns that are overwritten by the source ones for translation/extraction. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Firstly, let's suppose we would like to translate column A only and place the translation in column B. At the same time we do not want to translate the 1st and the 2nd rows.&lt;br /&gt;
: This requirement can be configured in the following way (using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format as an example):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.sourceColumns=A&lt;br /&gt;
worksheetConfigurations.0.targetColumns=B&lt;br /&gt;
worksheetConfigurations.0.excludedRows=1,2&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C,D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then the XLIFF would look like this after extraction and translation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A3-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A4-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!B5&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A5&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;A5-tr&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: And the merged representation would be the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || A3-tr || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || A4-tr || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || A5-tr || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: Furthermore, let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=993</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=993"/>
		<updated>2023-12-14T14:18:20Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Translate Cells Copied&lt;br /&gt;
: When checked, cell data are copied on extraction to allow contextualised and independent translations.  Default: on.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations (I am using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format at the moment):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=XML_Filter&amp;diff=981</id>
		<title>XML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=XML_Filter&amp;diff=981"/>
		<updated>2023-08-16T16:34:01Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Filter Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process XML documents. It uses a DOM-based parser, which allows it to implement [[ITS]]. If you need to process very large XML documents and have no need for ITS, you may want to look at using the [[XML Stream Filter]].&lt;br /&gt;
&lt;br /&gt;
The following is an example of a simple XML document. The translatable text is highlighted. Because each format based on XML is different, you need information on what are the translatable parts, what are the inline elements, etc. The XML Filter [[#ITS Support|implements the ITS W3C Recommendation]] to address this issue.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;amp;lt;myDoc&amp;gt;&lt;br /&gt;
  &amp;amp;lt;prolog&amp;gt;&lt;br /&gt;
   &amp;amp;lt;author&amp;gt;Zebulon Fairfield&amp;lt;/author&amp;gt;&lt;br /&gt;
   &amp;amp;lt;version&amp;gt;version 12, revision 2 - 2006-08-14&amp;lt;/version&amp;gt;&lt;br /&gt;
   &amp;amp;lt;keywords&amp;gt;&amp;lt;kw&amp;gt;&amp;lt;span class=&amp;quot;hi&amp;quot;&amp;gt;horse&amp;lt;/span&amp;gt;&amp;lt;/kw&amp;gt;&amp;lt;kw&amp;gt;&amp;lt;span class=&amp;quot;hi&amp;quot;&amp;gt;appaloosa&amp;lt;/span&amp;gt;&amp;lt;/kw&amp;gt;&amp;lt;/keywords&amp;gt;&lt;br /&gt;
   &amp;amp;lt;storageKey&amp;gt;articles-6D272BA9-3B89CAD8&amp;lt;/storageKey&amp;gt;&lt;br /&gt;
  &amp;amp;lt;/prolog&amp;gt;&lt;br /&gt;
  &amp;amp;lt;body&amp;gt;&lt;br /&gt;
   &amp;amp;lt;title&amp;gt;&amp;lt;span class=&amp;quot;hi&amp;quot;&amp;gt;Appaloosa&amp;lt;/span&amp;gt;&amp;amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;gt;&amp;lt;span class=&amp;quot;hi&amp;quot;&amp;gt;The Appaloosas are rugged horses originally breed by &lt;br /&gt;
 the &amp;lt;kw&amp;gt;Nez-Perce&amp;lt;/kw&amp;gt; tribe in the US Northwest.&amp;lt;/span&amp;gt;&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;gt;&amp;lt;span class=&amp;quot;hi&amp;quot;&amp;gt;They are often characterized by their spotted coats.&amp;lt;/span&amp;gt;&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/myDoc&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This filter is implemented in the class &amp;lt;code&amp;gt;net.sf.okapi.filters.xml.XMLFilter&amp;lt;/code&amp;gt; of the library.&lt;br /&gt;
&lt;br /&gt;
==Processing Details==&lt;br /&gt;
&lt;br /&gt;
===Input Encoding===&lt;br /&gt;
&lt;br /&gt;
The filter decides which encoding to use for the input document using the following logic:&lt;br /&gt;
&lt;br /&gt;
* If the document has an encoding declaration it is used. &lt;br /&gt;
* Otherwise, UTF-8 is used as the default encoding (regardless the actual default encoding that was specified when opening the document). &lt;br /&gt;
&lt;br /&gt;
===Output Encoding===&lt;br /&gt;
&lt;br /&gt;
If the output encoding is UTF-8:&lt;br /&gt;
&lt;br /&gt;
* If the input encoding was also UTF-8, a Byte-Order-Mark is used for the output document only if one was detected in the input document. &lt;br /&gt;
* If the input encoding was not UTF-8, no Byte-Order-Mark is used in the output document. &lt;br /&gt;
&lt;br /&gt;
If the original document had an XML encoding declaration it is updated, if it did not, one is automatically added.&lt;br /&gt;
&lt;br /&gt;
===Line-Breaks===&lt;br /&gt;
&lt;br /&gt;
The type of line-breaks of the output is the same as the one of the original input.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
This filter stores its parameters in an XML file and does not provide an editor to modify it. You can edit the file in a simple text editor, or with an XML editor. For an example, see the article &amp;quot;[[How to Create a Custom Configuration for the XML Filter]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===ITS Support===&lt;br /&gt;
&lt;br /&gt;
By default the filter process the XML documents based on the '''ITS defaults'''. That is:&lt;br /&gt;
&lt;br /&gt;
* the content of all elements is translatable,&lt;br /&gt;
* and none of the values of the attribute translatable.&lt;br /&gt;
&lt;br /&gt;
Different behavior can occur if the input document contains ITS markup, or if a filter parameters file is specified. The parameters file used by the the XML Filter is [[ITS|an ITS document]].&lt;br /&gt;
&lt;br /&gt;
The '''Internationalization Tag set (ITS)''' is a W3C recommendation that defines a set of elements and attributes you can use to specify different internationalization- and localization-related aspects of your XML document, for instance: ITS defines what attribute values are translatable, what element content should be protected, what element should be treated as a nested sub-flow of text, and much more.&lt;br /&gt;
&lt;br /&gt;
The filter supports ITS 1.0 and ITS 2.0 (2.0 is backward compatible with 1.0)&lt;br /&gt;
&lt;br /&gt;
* The ITS 1.0 specification is available at http://www.w3.org/TR/its/.&lt;br /&gt;
* The ITS 2.0 specification is available at http://www.w3.org/TR/its20/.&lt;br /&gt;
&lt;br /&gt;
See the &amp;quot;[[ITS]]&amp;quot; page for more details on the format.&lt;br /&gt;
&lt;br /&gt;
The filter supports global and local rules and most data categories. See the '''[[ITS Components]]''' page for a detailed list of how the data categories are supported and other information on the implementation.&lt;br /&gt;
&lt;br /&gt;
===ITS Extensions===&lt;br /&gt;
&lt;br /&gt;
The filter supports extensions to the ITS specification. These extension use the namespace URI http://www.w3.org/2008/12/its-extensions.&lt;br /&gt;
&lt;br /&gt;
* [[#idValue and xml:id|idValue and xml:id]]&lt;br /&gt;
* [[#whiteSpaces|whiteSpaces]]&lt;br /&gt;
&lt;br /&gt;
====idValue and xml:id====&lt;br /&gt;
&lt;br /&gt;
{{NoteBox|This extension was defined for ITS 1.0, ITS 2.0 offers the new [http://www.w3.org/TR/its20/#idvalue Id Value] data category that should be used instead of this extension.}}&lt;br /&gt;
&lt;br /&gt;
When the attribute &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt; is found on a translatable element, it is used as the name of the text unit generated for that element.&lt;br /&gt;
&lt;br /&gt;
For example, in the example below, the resource name associated with the text unit for the &amp;lt;code&amp;gt;&amp;amp;lt;p&amp;gt;&amp;lt;/code&amp;gt; element is &amp;quot;&amp;lt;code&amp;gt;id1&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;p xml:id=&amp;quot;id1&amp;quot;&amp;gt;Text&amp;amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attribute &amp;lt;code&amp;gt;idValue&amp;lt;/code&amp;gt; used in the ITS &amp;lt;code&amp;gt;translateRule&amp;lt;/code&amp;gt; element allows you to define an XPath expression that correspeonds to the identifier value for the given selection. The value of &amp;lt;code&amp;gt;idValue&amp;lt;/code&amp;gt; must be an expression that can return a string. A node location is a valid expression: it will return the value of the first node at the given location.&lt;br /&gt;
&lt;br /&gt;
For example, in the example below, the resource name associated with the text unit for the &amp;lt;code&amp;gt;&amp;amp;lt;p&amp;gt;&amp;lt;/code&amp;gt; element is &amp;quot;&amp;lt;code&amp;gt;id1&amp;lt;/code&amp;gt;&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;doc&amp;gt;&lt;br /&gt;
 &amp;lt;its:rules version=&amp;quot;1.0&amp;quot; xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
  xmlns:itsx=&amp;quot;http://www.w3.org/2008/12/its-extensions&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;its:translateRule selector=&amp;quot;//p&amp;quot; translate=&amp;quot;yes&amp;quot; itsx:idValue=&amp;quot;@name&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/its:rules&amp;gt;&lt;br /&gt;
 &amp;lt;p name=&amp;quot;id1&amp;quot;&amp;gt;text 1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/doc&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt; has precedence over &amp;lt;code&amp;gt;idValue&amp;lt;/code&amp;gt; declaration. For example, in the example below, the resource name associated with the text unit for the &amp;lt;code&amp;gt;&amp;amp;lt;p&amp;gt;&amp;lt;/code&amp;gt; element is &amp;quot;&amp;lt;code&amp;gt;xid1&amp;lt;/code&amp;gt;&amp;quot;, not &amp;quot;&amp;lt;code&amp;gt;id1&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;doc&amp;gt;&lt;br /&gt;
 &amp;lt;its:rules version=&amp;quot;1.0&amp;quot; xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
  xmlns:itsx=&amp;quot;http://www.w3.org/2008/12/its-extensions&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;its:translateRule selector=&amp;quot;//p&amp;quot; translate=&amp;quot;yes&amp;quot; itsx:idValue=&amp;quot;@name&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/its:rules&amp;gt;&lt;br /&gt;
 &amp;lt;p xml:id=&amp;quot;xid1&amp;quot; name=&amp;quot;id1&amp;quot;&amp;gt;text 1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/doc&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can build complex ID based on different attributes, element or event hard-coded text. Any of the String functions offered by XPath can be used.&lt;br /&gt;
&lt;br /&gt;
For example, in the file below, the two elements &amp;lt;code&amp;gt;&amp;amp;tl;text&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;desc&amp;gt;&amp;lt;/code&amp;gt; are translatable, but they have only one corresponding ID, the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute in their parent element. To make sure you have a unique identifier for both the content of &amp;lt;code&amp;gt;&amp;amp;lt;text&amp;gt;&amp;lt;/code&amp;gt; and the content of &amp;lt;code&amp;gt;&amp;amp;lt;desc&amp;gt;&amp;lt;/code&amp;gt;, you can use the rules set in the example. The XPath expression &amp;quot;&amp;lt;code&amp;gt;concat(../@name, '_t')&amp;lt;/code&amp;gt;&amp;quot; will give the ID &amp;quot;&amp;lt;code&amp;gt;id1_t&amp;lt;/code&amp;gt;&amp;quot; and the expression &amp;quot;&amp;lt;code&amp;gt;concat(../@name, '_d')&amp;lt;/code&amp;gt;&amp;quot; will give the ID &amp;quot;&amp;lt;code&amp;gt;id1_d&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;doc&amp;gt;&lt;br /&gt;
 &amp;lt;its:rules version=&amp;quot;1.0&amp;quot; xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
  xmlns:itsx=&amp;quot;http://www.w3.org/2008/12/its-extensions&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;its:translateRule selector=&amp;quot;//text&amp;quot; translate=&amp;quot;yes&amp;quot; itsx:idValue=&amp;quot;concat(../@name, '_t')&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;its:translateRule selector=&amp;quot;//desc&amp;quot; translate=&amp;quot;yes&amp;quot; itsx:idValue=&amp;quot;concat(../@name, '_d')&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/its:rules&amp;gt;&lt;br /&gt;
 &amp;lt;msg name=&amp;quot;id1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;text&amp;gt;Value of text&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;Value of desc&amp;lt;/desc&amp;gt;&lt;br /&gt;
 &amp;lt;/msg&amp;gt;&lt;br /&gt;
&amp;lt;/doc&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====whiteSpaces====&lt;br /&gt;
&lt;br /&gt;
{{NoteBox|This extension was defined for ITS 1.0, ITS 2.0 offers the new [http://www.w3.org/TR/its20/#preservespace Preserve Space] data category that should be used instead of this extension.}}&lt;br /&gt;
&lt;br /&gt;
The extension attribute whiteSpaces allows you to apply globally the equivalent of a local &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt; attribute.&lt;br /&gt;
&lt;br /&gt;
For example, if you have a format where all element &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;gt;&amp;lt;/code&amp;gt; must have their spaces, tabs and line breaks preserved, you can specify the attribute &amp;lt;code&amp;gt;whiteSpaces=&amp;quot;preserve&amp;quot;&amp;lt;/code&amp;gt; in a &amp;lt;code&amp;gt;&amp;amp;lt;its:translateRule&amp;gt;&amp;lt;/code&amp;gt; element for the &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;gt;&amp;lt;/code&amp;gt; elements. In the example below, the spaces in the &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;gt;&amp;lt;/code&amp;gt; element will be preserved on extraction.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;doc&amp;gt;&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&amp;lt;its:rules version=&amp;quot;1.0&amp;quot; xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
   xmlns:itsx=&amp;quot;http://www.w3.org/2008/12/its-extensions&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
   &amp;lt;its:translateRule selector=&amp;quot;//pre&amp;quot; translate=&amp;quot;yes&amp;quot; itsx:whiteSpaces=&amp;quot;preserve&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/its:rules&amp;gt;&lt;br /&gt;
  &amp;amp;lt;pre&amp;gt;Some txt with    many spaces.  &amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
 &amp;lt;/doc&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt; attribute has precedence over &amp;lt;code&amp;gt;whiteSpaces&amp;lt;/code&amp;gt;. For example, in the following example, the white spaces in the content of &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;gt;&amp;lt;/code&amp;gt; may '''not''' be preserved because the attribute &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt; has the value &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;doc&amp;gt;&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&amp;lt;its:rules version=&amp;quot;1.0&amp;quot; xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
   xmlns:itsx=&amp;quot;http://www.w3.org/2008/12/its-extensions&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
   &amp;lt;its:translateRule selector=&amp;quot;//pre&amp;quot; translate=&amp;quot;yes&amp;quot; itsx:whiteSpaces=&amp;quot;preserve&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/its:rules&amp;gt;&lt;br /&gt;
  &amp;amp;&amp;amp;lt;pre xml:space=&amp;quot;default&amp;quot;&amp;gt;Some txt with    many spaces.  &amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
 &amp;lt;/doc&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Filter Options===&lt;br /&gt;
&lt;br /&gt;
The filter supports also options in addition to ITS and ITS extension. These options use the namespace URI &amp;lt;code&amp;gt;okapi-framework:xmlfilter-options&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{NoteBox|The filter options must be placed in the parameters file (.fprm) used with the filter, not in embedded or linked ITS rules. Options placed in embedded or linked ITS rules have no effect.}}&lt;br /&gt;
&lt;br /&gt;
When you use several options, they must be set in a single &amp;lt;code&amp;gt;&amp;amp;lt;okp:options&amp;gt;&amp;lt;/code&amp;gt; element, as shown below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;its:rules version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
 xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
 xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;okp:options lineBreakAsCode=&amp;quot;yes&amp;quot;&lt;br /&gt;
              escapeQuotes=&amp;quot;no&amp;quot;&lt;br /&gt;
              escapeGT=&amp;quot;yes&amp;quot;&lt;br /&gt;
 /&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following options are available:&lt;br /&gt;
&lt;br /&gt;
* [[#lineBreakAsCode|lineBreakAsCode]]&lt;br /&gt;
* [[#codeFinder|codeFinder]]&lt;br /&gt;
* [[#omitXMLDeclaration|omitXMLDeclaration]]&lt;br /&gt;
* [[#escapeQuotes|escapeQuotes]]&lt;br /&gt;
* [[#escapeGT|escapeGT]]&lt;br /&gt;
* [[#escapeNbsp|escapeNbsp]]&lt;br /&gt;
* [[#extractIfOnlyCodes|extractIfOnlyCodes]]&lt;br /&gt;
* [[#inlineCdata|inlineCdata]]&lt;br /&gt;
* [[#extractUntranslatable|extractUntranslatable]]&lt;br /&gt;
&lt;br /&gt;
====lineBreakAsCode====&lt;br /&gt;
&lt;br /&gt;
In some cases the content of element includes line-breaks that need to be included as part of the content but without using an actual line-break in the extracted text. For example in some XML documents generated by Excel, the formatting of the cells is marked up with &amp;lt;code&amp;gt;&amp;amp;amp;#10;&amp;lt;/code&amp;gt; entity references. They need to be passed as inline codes.&lt;br /&gt;
&lt;br /&gt;
By default this option is set to false.&lt;br /&gt;
&lt;br /&gt;
To specify this the filter use the extension &amp;lt;code&amp;gt;lineBreakAsCode&amp;lt;/code&amp;gt; extension attribute. This affect all the extracted content.&lt;br /&gt;
&lt;br /&gt;
For example: The following code is an ITS document with the option to treat line-breaks as code. It can be used along with the example of XML document listed below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;its:rules version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
 xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
 xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;okp:options lineBreakAsCode=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;doc&amp;gt;&lt;br /&gt;
  &amp;lt;data&amp;gt;line 1&amp;amp;amp;#10;line 2.&amp;lt;/data&amp;gt;&lt;br /&gt;
 &amp;lt;/doc&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====codeFinder====&lt;br /&gt;
&lt;br /&gt;
You can define a set of regular expressions to capture span of extracted text that should be treated as inline codes. For example, some element content may have variables, or HTML tags that need to be protected from modification and treated as codes. Use the codeFinder element for this.&lt;br /&gt;
&lt;br /&gt;
In the following parameters file, the &amp;lt;code&amp;gt;codeFinder&amp;lt;/code&amp;gt; element defines two rules:&lt;br /&gt;
&lt;br /&gt;
* The first one (rule0) is &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;(/?)\w[^&amp;gt;]*?&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; and matches any XML-type tags (e.g. &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;b&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;, &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;/b&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;, &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;)&lt;br /&gt;
* The second one (rule1) is &amp;quot;&amp;lt;code&amp;gt;(#\w+?\#)|(%\d+?%)&amp;lt;/code&amp;gt;&amp;quot; and matches any word enclosed in &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; (e.g. &amp;quot;&amp;lt;code&amp;gt;#VAR#&amp;lt;/code&amp;gt;&amp;quot;) or number enclosed in &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt; (e.g. &amp;quot;&amp;lt;code&amp;gt;%1%&amp;lt;/code&amp;gt;&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;its:rules version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
 xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
 xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;okp:codeFinder useCodeFinder=&amp;quot;yes&amp;quot;&amp;gt;#v1&lt;br /&gt;
count.i=2&lt;br /&gt;
rule0=&amp;amp;amp;lt;(/?)\w+[^&amp;amp;amp;gt;]*?&amp;amp;amp;gt;&lt;br /&gt;
rule1=(#\w+?\#)|(%\d+?%)&lt;br /&gt;
 &amp;lt;/okp:codeFinder&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some important details:&lt;br /&gt;
&lt;br /&gt;
* Set &amp;lt;code&amp;gt;useCodeFinder&amp;lt;/code&amp;gt; to &amp;quot;yes&amp;quot; to have the rules used, if the attribute is missing its value is assumed to be &amp;quot;no&amp;quot;.&lt;br /&gt;
* Make sure the first line of the &amp;lt;code&amp;gt;&amp;amp;lt;codeFinder&amp;gt;&amp;lt;/code&amp;gt; element content is &amp;lt;code&amp;gt;#v1&amp;lt;/code&amp;gt;. &lt;br /&gt;
* Each entry in the content must be on a separate line. &lt;br /&gt;
* &amp;lt;code&amp;gt;count.i=N&amp;lt;/code&amp;gt; must be before any rules and &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; must be the number of rules. &lt;br /&gt;
* &amp;lt;code&amp;gt;ruleN&amp;lt;/code&amp;gt; must be incremented starting at 0. &lt;br /&gt;
* The pattern for a rule must be escaped for XML, for example: &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;(/?)\w[^&amp;gt;]*?&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; must be entered &amp;quot;&amp;lt;code&amp;gt;&amp;amp;amp;lt;(/?)\w[^&amp;amp;amp;lt;]*?&amp;amp;amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in the parameters file. &lt;br /&gt;
* Do not put spaces before &amp;lt;code&amp;gt;count.i&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ruleN&amp;lt;/code&amp;gt;, and not after your expressions.&lt;br /&gt;
&lt;br /&gt;
To facilitate the creation of code finder rules [[Rainbow - Code Finder Editor|Rainbow provides the Code Finder Editor]].&lt;br /&gt;
&lt;br /&gt;
====omitXMLDeclaration====&lt;br /&gt;
&lt;br /&gt;
By default an XML declaration is always set at the top of the output document (regardless wether the original document has one or not). It is an important part of the XML document and it is especially needed when the encoding of the output document is not UTF-8, UTF-16 or UTF-32, as its name must be specified in the XML declaration. However, there are a few special cases when the declaration is better left off. To handle those rare cases, you can use &amp;lt;code&amp;gt;omitXMLDeclation&amp;lt;/code&amp;gt; to indicate the filter to not output the XML declaration.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;its:rules version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
 xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
 xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;okp:options omitXMLDeclaration=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember that XML documents without an XML declaration may be read incorrectly if the encoding of the document is not UTF-8, UTF-16 or UTF-32.&lt;br /&gt;
&lt;br /&gt;
====escapeQuotes====&lt;br /&gt;
&lt;br /&gt;
By default, when processing the document, the filter uses double-quotes to enclose all attributes (translatable or not) and use the following rules for escaping/not-escaping the literal quotes:&lt;br /&gt;
&lt;br /&gt;
* Inside the attribute values:&lt;br /&gt;
** Single-quotes (=apostrophes) are never escaped&lt;br /&gt;
** Double-quotes are always escaped&lt;br /&gt;
* In element content:&lt;br /&gt;
** Single-quotes (=apostrophes) are not escaped&lt;br /&gt;
** Double-quotes are escaped by default&lt;br /&gt;
&lt;br /&gt;
You cannot change the escaping rules for attributes.&lt;br /&gt;
&lt;br /&gt;
For element content: If the document is processed without triggering any rule that allow the translation of an attribute, then (and only then) the filter takes into account the &amp;lt;code&amp;gt;escapeQuotes&amp;lt;/code&amp;gt; option to escape or not double-quotes in the translatable content.&lt;br /&gt;
&lt;br /&gt;
For example, the following parameters file allows to not escape double-quotes in element content (for the documents where there is no rule for translatable attributes are triggered):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;its:rules version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
 xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
 xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;okp:options escapeQuotes=&amp;quot;no&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====escapeGT====&lt;br /&gt;
&lt;br /&gt;
By default the character '&amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;' is escaped. You can indicate to the filter to not escape it using the &amp;lt;code&amp;gt;escapeGT&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
For example, the following parameters file indicates to not escape greater-than characters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;its:rules version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
 xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
 xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;okp:options escapeGT=&amp;quot;no&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====escapeNbsp====&lt;br /&gt;
&lt;br /&gt;
By default the non-breaking space character is escaped (in the form &amp;lt;code&amp;gt;&amp;amp;amp;#x00a0;&amp;lt;/code&amp;gt;). You can indicate to the filter to not escape it using the &amp;lt;code&amp;gt;escapeNbsp&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
For example, the following parameters file indicates to not escape the non-breaking space characters:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;its:rules version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
 xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
 xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;okp:options escapeNbsp=&amp;quot;no&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====extractIfOnlyCodes====&lt;br /&gt;
&lt;br /&gt;
By default all extractable entries are extracted even when they contain only white-spaces and/or inline codes. You can indicate to the filter to not extract such entries using the &amp;lt;code&amp;gt;extractIfOnlyCodes&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
For example, the following parameters file indicates to not extract entries with only whte-spaces and/or inline codes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;its:rules version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
 xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
 xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;okp:options extractIfOnlyCodes=&amp;quot;no&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====inlineCdata====&lt;br /&gt;
&lt;br /&gt;
By default, CDATA sections will be exposed as regular content, and the CDATA markers themselves will be discarded.  When the &amp;lt;code&amp;gt;inlineCdata&amp;lt;/code&amp;gt; option is set,&lt;br /&gt;
the CDATA markers will be exposed as inline codes.&lt;br /&gt;
&lt;br /&gt;
For example, the following parameters file will expose CDATA markers as inline codes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;its:rules version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
 xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
 xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;okp:options inlineCdata=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====extractUntranslatable====&lt;br /&gt;
&lt;br /&gt;
All untranslatable entries (&amp;lt;code&amp;gt;its:translate=&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt;) are not extracted by default. And in order to allow the extraction of such entries for context reasons, the following option has to be used: &amp;lt;code&amp;gt;extractUntranslatable&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Below is an example of this option declaration: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;its:rules version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
 xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot;&lt;br /&gt;
 xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;okp:options extractUntranslatable=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Currently, in some cases, the ITS rule &amp;lt;code&amp;gt;withinTextRule&amp;lt;/code&amp;gt; with the value &amp;lt;code&amp;gt;nested&amp;lt;/code&amp;gt; may act like it has a value &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* In output, the values of the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attributes are not updated to reflect the target language.&lt;br /&gt;
* When doing the extraction, the whole input file is loaded into memory. You may run into memory limitation if the document is very large.&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]] [[Category:ITS]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=980</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=980"/>
		<updated>2023-08-09T03:43:02Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Word Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation. Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation. Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation. Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Ignored Styles &amp;gt; Ignore Font Colours&lt;br /&gt;
: When checked, font colours will be ignored. Default: off.&lt;br /&gt;
: If &amp;lt;cite&amp;gt;Clean Tags Aggressively&amp;lt;/cite&amp;gt; and this option are checked and the ignorance thresholds are empty, the font colour run properties are removed from the document structure on filtering. This means that the font colour information is absent on merge as well.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Minimum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored starting from the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: black, Black, 000000 - thresholds in white. Default: none.&lt;br /&gt;
; Ignored Styles &amp;gt; Font Colours Maximum Ignorance Threshold&lt;br /&gt;
: When defined, font colours will be ignored ending by the specified value. It can be empty (considered as a white colour by default), and contain preset colour values or RGB hex strings: white, White, FFFFFF - thresholds in white. Default: none.&lt;br /&gt;
; Excluded/Included Styles&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected styles will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded/Included Highlight Colors&lt;br /&gt;
: Depending on the radio switch (exclude or include), text using any selected colours will be excluded or included for translation. Default: none.&lt;br /&gt;
; Excluded Font Colours&lt;br /&gt;
: Text using any selected colours will not be exposed for translation. Default: none.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations (I am using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format at the moment):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=977</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=977"/>
		<updated>2023-07-07T18:37:17Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Word Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation.  Default: on.&lt;br /&gt;
; Translate Numbering Level Text&lt;br /&gt;
: When checked, exposes numbering-level text for translation.  Default: off.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation.  Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Styles to Exclude&lt;br /&gt;
: Text using any of the selected styles will not be exposed for translation. Default: none.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations (I am using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format at the moment):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=969</id>
		<title>IDML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=969"/>
		<updated>2023-02-12T15:06:45Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process IDML documents. IDML (InDesign Markup Language) is an XML-based format, introduced in Adobe InDesign CS4, for representing InDesign content. IDML is used in several InDesign and InCopy file types. The specification can be found [http://www.adobe.com/content/dam/Adobe/en/devnet/indesign/cs5_docs/idml/idml-specification.pdf on the Adobe Web site].&lt;br /&gt;
&lt;br /&gt;
==Processing Details==&lt;br /&gt;
&lt;br /&gt;
When processing an IDML filter, the filter looks at all the spreads in the document, and for each of them, gather the list of the stories used in &amp;lt;code&amp;gt;&amp;amp;lt;TextFrame&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;TextPath&amp;gt;&amp;lt;/code&amp;gt;. The text is extracted by spread, and for each spread by story in the order the appear in the spread.&lt;br /&gt;
&lt;br /&gt;
Stories embedded inside other stories and not declared at a spread level are extracted in a special group.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum attribute size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the size in MB for the attribute buffer. The default is 4MB (4 * 1024 * 1024)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Untag XML Structures&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to skip embedded XML structural information when extracting translatable content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract notes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of notes (&amp;lt;code&amp;gt;&amp;amp;lt;Note&amp;gt;&amp;lt;/code&amp;gt; elements).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract master spreads&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of the master spreads if they exist. If this option is not set only the normal spreads are extracted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden layers&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract also the hidden layers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden pasteboard items&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Skip discretionary hyphens&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract breaks inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hyperlink text sources inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set to true, the hyperlink text sources are extracted inline, otherwise, they are represented as referencing groups of textual units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract custom text variables&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract index topics&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract external hyperlinks&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set to true, the external hyperlinks are extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character kerning&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character tracking&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character leading&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character baseline shift&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Special character pattern&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is &amp;quot; | | | | | | | | | |​|‌|­|‑|﻿&amp;quot;). A matched content is treated as inline code.&lt;br /&gt;
&lt;br /&gt;
==Deprecated Parameters==&lt;br /&gt;
&lt;br /&gt;
Prior to release M34, the filter supported several additional parameters.  The behavior of these has been subsumed by the more intelligent content processing performed by the updated version of the filter in versions M34 and later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Simplify inline codes when possible&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to reduce the number of inline codes by re-grouping adjacent codes when it is possible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Create new text units on hard returns&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to create separate text units when a hard return element (&amp;lt;code&amp;gt;&amp;amp;lt;Br/&amp;gt;&amp;lt;/code&amp;gt;) is found.&amp;lt;br/&amp;gt; '''IMPORTANT: This option is not completed yet. Setting it may create extracted documents you will not be able to merge back. Always test merge before use this for production.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the maximum size for the spread files (in KBytes). Any spread file above the given value will either generate an error or will be skipped from extraction depending on the specified option. This allows you to skip over large spread files that may contain only graphics and require too much memory to be opened. Note that the skipped file are not checked for translatable text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Generate an error when a spread is larger than the specified value&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to generate an error if a spread size is above the specified &amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt;. If this option is not set, the spread is skipped with a warning message.&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=968</id>
		<title>IDML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=968"/>
		<updated>2023-02-12T15:02:28Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process IDML documents. IDML (InDesign Markup Language) is an XML-based format, introduced in Adobe InDesign CS4, for representing InDesign content. IDML is used in several InDesign and InCopy file types. The specification can be found [http://www.adobe.com/content/dam/Adobe/en/devnet/indesign/cs5_docs/idml/idml-specification.pdf on the Adobe Web site].&lt;br /&gt;
&lt;br /&gt;
==Processing Details==&lt;br /&gt;
&lt;br /&gt;
When processing an IDML filter, the filter looks at all the spreads in the document, and for each of them, gather the list of the stories used in &amp;lt;code&amp;gt;&amp;amp;lt;TextFrame&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;TextPath&amp;gt;&amp;lt;/code&amp;gt;. The text is extracted by spread, and for each spread by story in the order the appear in the spread.&lt;br /&gt;
&lt;br /&gt;
Stories embedded inside other stories and not declared at a spread level are extracted in a special group.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum attribute size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the size in MB for the attribute buffer. The default is 4MB (4 * 1024 * 1024)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Untag XML Structures&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to skip embedded XML structural information when extracting translatable content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract notes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of notes (&amp;lt;code&amp;gt;&amp;amp;lt;Note&amp;gt;&amp;lt;/code&amp;gt; elements).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract master spreads&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of the master spreads if they exist. If this option is not set only the normal spreads are extracted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden layers&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract also the hidden layers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden pasteboard items&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Skip discretionary hyphens&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract breaks inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hyperlink text sources inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set to true, the hyperlink text sources are extracted inline, otherwise, they are represented as referencing groups of textual units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract custom text variables&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract index topics&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract external hyperlinks&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set to true, the external hyperlinks are extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character kerning&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character tracking&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character leading&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character baseline shift&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Special character pattern&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is &amp;quot; | | | | | | | | | |​|‌|­|‑|﻿&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Deprecated Parameters==&lt;br /&gt;
&lt;br /&gt;
Prior to release M34, the filter supported several additional parameters.  The behavior of these has been subsumed by the more intelligent content processing performed by the updated version of the filter in versions M34 and later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Simplify inline codes when possible&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to reduce the number of inline codes by re-grouping adjacent codes when it is possible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Create new text units on hard returns&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to create separate text units when a hard return element (&amp;lt;code&amp;gt;&amp;amp;lt;Br/&amp;gt;&amp;lt;/code&amp;gt;) is found.&amp;lt;br/&amp;gt; '''IMPORTANT: This option is not completed yet. Setting it may create extracted documents you will not be able to merge back. Always test merge before use this for production.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the maximum size for the spread files (in KBytes). Any spread file above the given value will either generate an error or will be skipped from extraction depending on the specified option. This allows you to skip over large spread files that may contain only graphics and require too much memory to be opened. Note that the skipped file are not checked for translatable text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Generate an error when a spread is larger than the specified value&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to generate an error if a spread size is above the specified &amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt;. If this option is not set, the spread is skipped with a warning message.&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=967</id>
		<title>IDML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=967"/>
		<updated>2023-02-10T02:30:20Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process IDML documents. IDML (InDesign Markup Language) is an XML-based format, introduced in Adobe InDesign CS4, for representing InDesign content. IDML is used in several InDesign and InCopy file types. The specification can be found [http://www.adobe.com/content/dam/Adobe/en/devnet/indesign/cs5_docs/idml/idml-specification.pdf on the Adobe Web site].&lt;br /&gt;
&lt;br /&gt;
==Processing Details==&lt;br /&gt;
&lt;br /&gt;
When processing an IDML filter, the filter looks at all the spreads in the document, and for each of them, gather the list of the stories used in &amp;lt;code&amp;gt;&amp;amp;lt;TextFrame&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;TextPath&amp;gt;&amp;lt;/code&amp;gt;. The text is extracted by spread, and for each spread by story in the order the appear in the spread.&lt;br /&gt;
&lt;br /&gt;
Stories embedded inside other stories and not declared at a spread level are extracted in a special group.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum attribute size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the size in MB for the attribute buffer. The default is 4MB (4 * 1024 * 1024)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Untag XML Structures&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to skip embedded XML structural information when extracting translatable content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract notes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of notes (&amp;lt;code&amp;gt;&amp;amp;lt;Note&amp;gt;&amp;lt;/code&amp;gt; elements).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract master spreads&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of the master spreads if they exist. If this option is not set only the normal spreads are extracted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden layers&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract also the hidden layers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden pasteboard items&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Skip discretionary hyphens&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract breaks inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hyperlink text sources inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set to true, the hyperlink text sources are extracted inline, otherwise, they are represented as referencing groups of textual units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract custom text variables&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract index topics&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract external hyperlinks&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set to true, the external hyperlinks are extracted for translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character kerning&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character tracking&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character leading&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character baseline shift&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
==Deprecated Parameters==&lt;br /&gt;
&lt;br /&gt;
Prior to release M34, the filter supported several additional parameters.  The behavior of these has been subsumed by the more intelligent content processing performed by the updated version of the filter in versions M34 and later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Simplify inline codes when possible&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to reduce the number of inline codes by re-grouping adjacent codes when it is possible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Create new text units on hard returns&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to create separate text units when a hard return element (&amp;lt;code&amp;gt;&amp;amp;lt;Br/&amp;gt;&amp;lt;/code&amp;gt;) is found.&amp;lt;br/&amp;gt; '''IMPORTANT: This option is not completed yet. Setting it may create extracted documents you will not be able to merge back. Always test merge before use this for production.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the maximum size for the spread files (in KBytes). Any spread file above the given value will either generate an error or will be skipped from extraction depending on the specified option. This allows you to skip over large spread files that may contain only graphics and require too much memory to be opened. Note that the skipped file are not checked for translatable text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Generate an error when a spread is larger than the specified value&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to generate an error if a spread size is above the specified &amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt;. If this option is not set, the spread is skipped with a warning message.&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=960</id>
		<title>IDML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=960"/>
		<updated>2023-01-23T02:48:03Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process IDML documents. IDML (InDesign Markup Language) is an XML-based format, introduced in Adobe InDesign CS4, for representing InDesign content. IDML is used in several InDesign and InCopy file types. The specification can be found [http://www.adobe.com/content/dam/Adobe/en/devnet/indesign/cs5_docs/idml/idml-specification.pdf on the Adobe Web site].&lt;br /&gt;
&lt;br /&gt;
==Processing Details==&lt;br /&gt;
&lt;br /&gt;
When processing an IDML filter, the filter looks at all the spreads in the document, and for each of them, gather the list of the stories used in &amp;lt;code&amp;gt;&amp;amp;lt;TextFrame&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;TextPath&amp;gt;&amp;lt;/code&amp;gt;. The text is extracted by spread, and for each spread by story in the order the appear in the spread.&lt;br /&gt;
&lt;br /&gt;
Stories embedded inside other stories and not declared at a spread level are extracted in a special group.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum attribute size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the size in MB for the attribute buffer. The default is 4MB (4 * 1024 * 1024)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Untag XML Structures&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to skip embedded XML structural information when extracting translatable content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract notes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of notes (&amp;lt;code&amp;gt;&amp;amp;lt;Note&amp;gt;&amp;lt;/code&amp;gt; elements).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract master spreads&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of the master spreads if they exist. If this option is not set only the normal spreads are extracted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden layers&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract also the hidden layers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden pasteboard items&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Skip discretionary hyphens&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract breaks inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hyperlink text sources inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false). When it is set, the hyperlink text sources are extracted inline, otherwise, they are represented as referencing groups of textual units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract custom text variables&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract index topics&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character kerning&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character tracking&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character leading&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character baseline shift&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
==Deprecated Parameters==&lt;br /&gt;
&lt;br /&gt;
Prior to release M34, the filter supported several additional parameters.  The behavior of these has been subsumed by the more intelligent content processing performed by the updated version of the filter in versions M34 and later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Simplify inline codes when possible&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to reduce the number of inline codes by re-grouping adjacent codes when it is possible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Create new text units on hard returns&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to create separate text units when a hard return element (&amp;lt;code&amp;gt;&amp;amp;lt;Br/&amp;gt;&amp;lt;/code&amp;gt;) is found.&amp;lt;br/&amp;gt; '''IMPORTANT: This option is not completed yet. Setting it may create extracted documents you will not be able to merge back. Always test merge before use this for production.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the maximum size for the spread files (in KBytes). Any spread file above the given value will either generate an error or will be skipped from extraction depending on the specified option. This allows you to skip over large spread files that may contain only graphics and require too much memory to be opened. Note that the skipped file are not checked for translatable text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Generate an error when a spread is larger than the specified value&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to generate an error if a spread size is above the specified &amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt;. If this option is not set, the spread is skipped with a warning message.&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=958</id>
		<title>IDML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=IDML_Filter&amp;diff=958"/>
		<updated>2023-01-09T03:27:02Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process IDML documents. IDML (InDesign Markup Language) is an XML-based format, introduced in Adobe InDesign CS4, for representing InDesign content. IDML is used in several InDesign and InCopy file types. The specification can be found [http://www.adobe.com/content/dam/Adobe/en/devnet/indesign/cs5_docs/idml/idml-specification.pdf on the Adobe Web site].&lt;br /&gt;
&lt;br /&gt;
==Processing Details==&lt;br /&gt;
&lt;br /&gt;
When processing an IDML filter, the filter looks at all the spreads in the document, and for each of them, gather the list of the stories used in &amp;lt;code&amp;gt;&amp;amp;lt;TextFrame&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;TextPath&amp;gt;&amp;lt;/code&amp;gt;. The text is extracted by spread, and for each spread by story in the order the appear in the spread.&lt;br /&gt;
&lt;br /&gt;
Stories embedded inside other stories and not declared at a spread level are extracted in a special group.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum attribute size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the size in MB for the attribute buffer. The default is 4MB (4 * 1024 * 1024)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Untag XML Structures&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to skip embedded XML structural information when extracting translatable content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract notes&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of notes (&amp;lt;code&amp;gt;&amp;amp;lt;Note&amp;gt;&amp;lt;/code&amp;gt; elements).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract master spreads&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract the content of the master spreads if they exist. If this option is not set only the normal spreads are extracted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden layers&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to extract also the hidden layers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hidden pasteboard items&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Skip discretionary hyphens&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract breaks inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract hyperlink text sources inline&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is true). When it is set, the hyperlink text sources are extracted inline, otherwise, they are represented as referencing groups of textual units.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract custom text variables&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Extract index topics&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character kerning&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character tracking&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character leading&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Ignore character baseline shift&amp;lt;/cite&amp;gt; &amp;amp;mdash; (default is false)&lt;br /&gt;
&lt;br /&gt;
==Deprecated Parameters==&lt;br /&gt;
&lt;br /&gt;
Prior to release M34, the filter supported several additional parameters.  The behavior of these has been subsumed by the more intelligent content processing performed by the updated version of the filter in versions M34 and later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Simplify inline codes when possible&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to reduce the number of inline codes by re-grouping adjacent codes when it is possible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Create new text units on hard returns&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to create separate text units when a hard return element (&amp;lt;code&amp;gt;&amp;amp;lt;Br/&amp;gt;&amp;lt;/code&amp;gt;) is found.&amp;lt;br/&amp;gt; '''IMPORTANT: This option is not completed yet. Setting it may create extracted documents you will not be able to merge back. Always test merge before use this for production.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set the maximum size for the spread files (in KBytes). Any spread file above the given value will either generate an error or will be skipped from extraction depending on the specified option. This allows you to skip over large spread files that may contain only graphics and require too much memory to be opened. Note that the skipped file are not checked for translatable text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;Generate an error when a spread is larger than the specified value&amp;lt;/cite&amp;gt; &amp;amp;mdash; Set this option to generate an error if a spread size is above the specified &amp;lt;cite&amp;gt;Maximum spread size&amp;lt;/cite&amp;gt;. If this option is not set, the spread is skipped with a warning message.&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=957</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=957"/>
		<updated>2022-12-14T04:12:41Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* PowerPoint Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation.  Default: on.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation.  Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Styles to Exclude&lt;br /&gt;
: Text using any of the selected styles will not be exposed for translation . Default: none.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations (I am using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format at the moment):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the following document properties are exposed for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Reorder Document Properties&lt;br /&gt;
: When checked, the document properties are reordered and placed after the root relationship part (_rels/.rels). Default: off.&lt;br /&gt;
; Reorder Relationships&lt;br /&gt;
: When checked, the relationship parts are reordered and placed after the related slide or layout or master part. Default: off.&lt;br /&gt;
; Translate Diagram Data&lt;br /&gt;
: When checked, the diagram data are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Diagram Data&lt;br /&gt;
: When checked, the diagram data parts are reordered and placed after the related slide or layout or master part and after their relationship parts. Default: off.&lt;br /&gt;
; Translate Charts&lt;br /&gt;
: When checked, the charts are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Charts&lt;br /&gt;
: When checked, the chart parts are reordered and placed after the related slide or layout or master part and after their diagram data parts. Default: off.&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, the slide notes exposed for translation. Default: off.&lt;br /&gt;
; Reorder Notes&lt;br /&gt;
: When checked, the note parts are reordered and placed after the related slide part and after its chart parts. Default: off.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked and the same option is checked under '''the Gereral Options''' (''they will be separated after the next release''), the document comments are exposed for translation. Default: on.&lt;br /&gt;
; Reorder Comments&lt;br /&gt;
: When checked, the comment parts are reordered and placed after the related slide part and after its note parts. Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose slide masters and notes masters for translation. This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: on.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=953</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=953"/>
		<updated>2022-11-14T16:24:02Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation.  Default: on.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation.  Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Styles to Exclude&lt;br /&gt;
: Text using any of the selected styles will not be exposed for translation . Default: none.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations (I am using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format at the moment):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, expose slide notes for translation.  Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose master slides for translation.  This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: off.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=Filters&amp;diff=937</id>
		<title>Filters</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=Filters&amp;diff=937"/>
		<updated>2022-06-22T18:45:37Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Font Mapping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Filters are the components that convert input documents from their native file format into a common internal set of [[Glossary#Resource|resources]] that all Okapi components use. The extracted content can be re-written into the original file format. When using the steps, the extraction is done by the [[Raw Document to Filter Events Step]] and the re-writing by the [[Filter Events to Raw Document Step]].&lt;br /&gt;
&lt;br /&gt;
Note: The [[Okapi Filters Plugin for OmegaT]] allows you to use some of the filters directly from [http://www.omegat.org OmegaT].&lt;br /&gt;
&lt;br /&gt;
==List of the Filters==&lt;br /&gt;
&lt;br /&gt;
The framework distribution comes with the following filters:&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;8&amp;quot; width=100%&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* [[Archive Filter]]&lt;br /&gt;
* [[DTD Filter]]&lt;br /&gt;
* [[Doxygen Filter]]&lt;br /&gt;
* [[HTML Filter]]&lt;br /&gt;
* [[HTML5-ITS Filter]]&lt;br /&gt;
* [[ICML Filter]]&lt;br /&gt;
* [[IDML Filter]]&lt;br /&gt;
* [[JSON Filter]]&lt;br /&gt;
* [[Markdown Filter]]&lt;br /&gt;
* [[MIF Filter]]&lt;br /&gt;
* [[Moses Text Filter]]&lt;br /&gt;
* [[Multi-Parsers Filter]]&lt;br /&gt;
* [[OpenOffice Filter]]&lt;br /&gt;
* [[OpenXML Filter|OpenXML (MS Office) Filter]]&lt;br /&gt;
|&lt;br /&gt;
* [[PDF Filter]]&lt;br /&gt;
* [[Pensieve TM Filter]]&lt;br /&gt;
* [[PHP Content Filter]]&lt;br /&gt;
* [[Plain Text Filter]]&lt;br /&gt;
* [[PO Filter]]&lt;br /&gt;
* [[Properties Filter]]&lt;br /&gt;
* [[Rainbow Translation Kit Filter]]&lt;br /&gt;
* [[Regex Filter]]&lt;br /&gt;
* [[SDL Trados Package Filter]]&lt;br /&gt;
* [[Simplification Filter]]&lt;br /&gt;
* [[Table Filter]]&lt;br /&gt;
* [[TMX Filter]]&lt;br /&gt;
* [[Trados-Tagged RTF Filter]]&lt;br /&gt;
|&lt;br /&gt;
* [[Transifex Filter]]&lt;br /&gt;
* [[TS Filter]]&lt;br /&gt;
* [[TTX Filter]]&lt;br /&gt;
* [[TXML Filter]]&lt;br /&gt;
* [[Wiki Filter]]&lt;br /&gt;
* [[Vignette Filter]]&lt;br /&gt;
* [[XLIFF Filter]]&lt;br /&gt;
* [[XLIFF-2 Filter]]&lt;br /&gt;
* [[XML Filter]]&lt;br /&gt;
* [[XML Stream Filter]]&lt;br /&gt;
* [[YAML Filter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Supported File Formats==&lt;br /&gt;
&lt;br /&gt;
The following is a list of some of the file formats supported by the distribution through [[Understanding Filter Configurations|pre-defined configurations]]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Format''' || '''Extensions''' || '''Pre-Defined Configuration''' || '''Filter''' || '''Notes'''&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Android Strings || .xml || &amp;lt;code&amp;gt;okf_xml-AndroidStrings&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Apple Stringsdict || .stringsdict || &amp;lt;code&amp;gt;okf_xml-AppleStringsdict&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Archive || .zip || &amp;lt;code&amp;gt;okf_archive&amp;lt;/code&amp;gt; || [[Archive Filter]] || Meta filter that processes zip files with various formats as one file.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Auto Xliff || .xlf, .xliff || &amp;lt;code&amp;gt;okf_autoxliff&amp;lt;/code&amp;gt; || [[Auto Xliff Filter]] || Detects the version of an XLIFF file and then hands parsing off to the appropriate filter &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| CSV (Comma-separated values files) || .csv, .txt || &amp;lt;code&amp;gt;okf_table_csv&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| CSV (Multiple complex sub-formats) || .csv || &amp;lt;code&amp;gt;okf_multiparsers&amp;lt;/code&amp;gt; || [[Multi-Parsers Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DITA || .dita, .ditamap, .xml || &amp;lt;code&amp;gt;okf_xmlstream-dita&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DocBook v5.0 || .xml || &amp;lt;code&amp;gt;okf_xml-docbook&amp;lt;/code&amp;gt; || [[XML Filter]] || Since Okapi 1.42. &amp;amp;lt;footnote&amp;gt; is not handled properly.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DokuWiki pages || .txt || &amp;lt;code&amp;gt;okf_wiki&amp;lt;/code&amp;gt; || [[Wiki Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Doxygen-commented files || .c, .h, cpp || &amp;lt;code&amp;gt;okf_doxygen&amp;lt;/code&amp;gt; || [[Doxygen Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DTD || .dtd || &amp;lt;code&amp;gt;okf_dtd&amp;lt;/code&amp;gt; || [[DTD Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Fixed-Width Columns Table || .txt || &amp;lt;code&amp;gt;okf_table_fwc&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Idiom WorldServer XLIFF || .xlf || &amp;lt;code&amp;gt;okf_xliff-iws&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| InCopy ICML || .wcml || &amp;lt;code&amp;gt;okf_icml&amp;lt;/code&amp;gt; || [[ICML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| InDesign IDML || .idml || &amp;lt;code&amp;gt;okf_idml&amp;lt;/code&amp;gt; || [[IDML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| iOS/Mac Strings|| .strings || &amp;lt;code&amp;gt;okf_regex-macStrings&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java Properties || .properties || &amp;lt;code&amp;gt;okf_properties&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java Properties (Output not escaped) || .properties || &amp;lt;code&amp;gt;okf_properties-outputNotEscaped&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java XML Properties || .xml || &amp;lt;code&amp;gt;okf_xml-JavaProperties&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java XML Properties (HTML strings) || .xml || &amp;lt;code&amp;gt;okf_xmlstream-JavaPropertiesHTML&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| JSON || .json || &amp;lt;code&amp;gt;okf_json&amp;lt;/code&amp;gt; || [[JSON Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Haiku CatKeys || .catkeys || &amp;lt;code&amp;gt;okf_table_catkeys&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML (any) || .html, .htm || &amp;lt;code&amp;gt;okf_html&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML (Well-formed, and XHTML) || .html, .htm|| &amp;lt;code&amp;gt;okf_html-wellFormed&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML5 (and XHTML5) || .html, .htm|| &amp;lt;code&amp;gt;okf_itshtml5&amp;lt;/code&amp;gt; || [[HTML5-ITS Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Markdown || .md || &amp;lt;code&amp;gt;okf_markdown&amp;lt;/code&amp;gt; || [[Markdown Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Excel 2007/2010 || .xlsx, .xlsm, .xltx, .xltm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft PowerPoint 2007/2010 || .pptx, .pptm, .potx, .potm, .ppsx, .ppsm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Visio || .vsdx, .vsdm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Word 2007/2010 || .docx, .docm, .dotx, .dotm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| MIF || .mif || &amp;lt;code&amp;gt;okf_mif&amp;lt;/code&amp;gt; || [[MIF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Moses Text || .txt || &amp;lt;code&amp;gt;okf_mosestext&amp;lt;/code&amp;gt; || [[Moses Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Calc || .ods, .ots || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Draw || .odg, .otg || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Impress || .odp, .otp || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Writer || .odt, .ott || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PDF || .pdf || &amp;lt;code&amp;gt;okf_pdf&amp;lt;/code&amp;gt; || [[PDF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Pensieve TM]] || .pentm || &amp;lt;code&amp;gt;okf_pensieve&amp;lt;/code&amp;gt; || [[Pensieve TM Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PHP Content || .php || &amp;lt;code&amp;gt;okf_phpcontent&amp;lt;/code&amp;gt; || [[PHP Content Filter]] || Can be used as a subfilter only&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Plain Text (Line = text unit) || .txt || &amp;lt;code&amp;gt;okf_plaintext&amp;lt;/code&amp;gt; || [[ Plain Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Plain Text (Paragraph = text unit) || .txt || &amp;lt;code&amp;gt;okf_plaintext_paragraphs&amp;lt;/code&amp;gt; || [[Plain Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PO || .po || &amp;lt;code&amp;gt;okf_po&amp;lt;/code&amp;gt; || [[PO Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PO (Monolingual style) || .po || &amp;lt;code&amp;gt;okf_po-monolingual&amp;lt;/code&amp;gt; || [[PO Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Rainbow Translation Kit manifests || .rkm || &amp;lt;code&amp;gt;okf_rainbowkit&amp;lt;/code&amp;gt; || [[Rainbow Translation Kit Filter]] || Used as a tkit reader only&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Regex (Any text-based format) || .txt || &amp;lt;code&amp;gt;okf_regex&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| RDF (Mozilla RDF) || .rdf || &amp;lt;code&amp;gt;okf_xml-MozillaRDF&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| RESX || .resx || &amp;lt;code&amp;gt;okf_xml-resx&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDLPPX || .sdlppx || &amp;lt;code&amp;gt;okf_sdlpackage&amp;lt;/code&amp;gt; || [[SDL Trados Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDLRPX || .sdlrpx || &amp;lt;code&amp;gt;okf_sdlpackage&amp;lt;/code&amp;gt; || [[SDL Trados Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDL[[XLIFF]] || .sdlxlf || &amp;lt;code&amp;gt;okf_xliff-sdl&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Skype Language Files || .lang || &amp;lt;code&amp;gt;okf_properties-skypeLang&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SRT (Sub-Rip Text, sub-titles files) || .srt || &amp;lt;code&amp;gt;okf_regex-srt&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Tab-Delimiter files || .tsv, .txt || &amp;lt;code&amp;gt;okf_table_tsv&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Tex files || .tex || &amp;lt;code&amp;gt;okf_tex&amp;lt;/code&amp;gt; || [[TEX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[TMX]] || .tmx || &amp;lt;code&amp;gt;okf_tmx&amp;lt;/code&amp;gt; || [[TMX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Transifex project || .txp || &amp;lt;code&amp;gt;okf_transifex&amp;lt;/code&amp;gt; || [[Transifex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Trados-Tagged RTF || .rtf || &amp;lt;code&amp;gt;okf_tradosrtf&amp;lt;/code&amp;gt; || [[Trados-Tagged RTF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TS - Qt TS files || .ts || &amp;lt;code&amp;gt;okf_ts&amp;lt;/code&amp;gt; || [[TS Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TTX - Trados TagEditor TTX files || .ttx || &amp;lt;code&amp;gt;okf_ttx&amp;lt;/code&amp;gt; || [[TTX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TXML - Wordfast Pro TXML files || .txml || &amp;lt;code&amp;gt;okf_txml&amp;lt;/code&amp;gt; || [[TXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Vignette Export/Import Content || .xml || &amp;lt;code&amp;gt;okf_vignette&amp;lt;/code&amp;gt; || [[Vignette Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XHTML || .html, .htm || &amp;lt;code&amp;gt;okf_html-wellFormed&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| WIX (Windows Installer XML) localization files || .wix || &amp;lt;code&amp;gt;okf_xml-WixLocalization&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[XLIFF]] v1.2 || .xlf, .xliff || &amp;lt;code&amp;gt;okf_xliff&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[XLIFF]] v2 || .xlf || &amp;lt;code&amp;gt;okf_xliff2&amp;lt;/code&amp;gt; || [[XLIFF-2 Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XML (Generic, using [[ITS]] defaults) || .xml || &amp;lt;code&amp;gt;okf_xml&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XML (Generic, using stream reader) || .xml || &amp;lt;code&amp;gt;okf_xmlstream&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| YAML (Generic YAML filter) || .yml, .yaml || &amp;lt;code&amp;gt;okf_yaml&amp;lt;/code&amp;gt; || [[YAML Filter]] ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that most filters allow you to [[Understanding Filter Configurations|create your own configurations]] to support more file formats.&lt;br /&gt;
&lt;br /&gt;
==Code Simplification Rules==&lt;br /&gt;
&lt;br /&gt;
All filters support code simplification rules. By default the [[Inline Codes Simplifier Step]], [[Simplification Filter]] and [[Post-segmentation Inline Codes Removal Step]] maximize the trimming and merging (aka simplification) of inline codes. In some cases this may not be desired. The simplification rules allow you to override the default behavior and prevent specific codes from being trimmed or merged.&lt;br /&gt;
&lt;br /&gt;
===General Syntax===&lt;br /&gt;
&lt;br /&gt;
The rules parser ignores irrelevant whitespace. Rules can be separated by spaces, newlines or nothing. This makes it easier to accommodate various container formats and their whitespace normalization rules. When a rule applies it means &amp;quot;do not simplify the match code&amp;quot;. Uppercase tokens are constants and predefined by the rule parser. Multiple rules are always OR'ed together.&lt;br /&gt;
&lt;br /&gt;
For more details see the JavaCC grammar: &amp;lt;code&amp;gt;../okapi-core/src/main/java/net/sf/okapi/core/simplifierrules/SimplifierRules.jj&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Rule Examples===&lt;br /&gt;
&lt;br /&gt;
If Code has any of these flags then don't simplify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DELETABLE or ADDABLE or CLONEABLE;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;=&amp;quot; is string match&lt;br /&gt;
Match basic TAGTYPE opening, closing or standalone &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA = &amp;quot;a&amp;quot; and TAGTYPE = OPENING;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;~&amp;quot; is regex match&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA ~ &amp;quot;a.*&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can negate any of the match operators &lt;br /&gt;
Don't simplify if the DATA does not match the regex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA !~ &amp;quot;a.*&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Match on type, linebreak in this case, don't simplify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if the Code is a linebreak if TYPE = &amp;quot;lb&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't simplify any rich text types&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;bold&amp;quot; or TYPE = &amp;quot;italic&amp;quot; or TYPE = &amp;quot;underline&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expressions can be recursive (supports embedded parens)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;bold&amp;quot; or (DATA = &amp;quot;bar&amp;quot; or (DATA = &amp;quot;foo&amp;quot; and TYPE = &amp;quot;underline&amp;quot;));&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===Filter Config Examples===&lt;br /&gt;
&lt;br /&gt;
Examples of using simplifier rules within the filter config formats used by Okapi.&lt;br /&gt;
&lt;br /&gt;
'''YAML:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
simplifierRules: |&lt;br /&gt;
  if ADDABLE or DELETABLE or CLONEABLE;&lt;br /&gt;
  if DATA = &amp;quot;&amp;lt;br/&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;font&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;/font&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
  if DATA ~ &amp;quot;\\&amp;lt;font.+&amp;quot; or DATA ~ &amp;quot;\\&amp;lt;img.+&amp;quot; or DATA ~ &amp;quot;\\&amp;lt;a.+&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ITS:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;its:rules xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot; version=&amp;quot;1.0&amp;quot; xmlns:itsx=&amp;quot;http://www.w3.org/2008/12/its-extensions&amp;quot; xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- See ITS specification at: http://www.w3.org/TR/its/ --&amp;gt;&lt;br /&gt;
 &amp;lt;its:translateRule selector=&amp;quot;//*&amp;quot; translate=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;its:withinTextRule selector=&amp;quot;//codeph&amp;quot; withinText=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;its:withinTextRule selector=&amp;quot;//ph&amp;quot; withinText=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;okp:simplifierRules&amp;gt;&lt;br /&gt;
 if ADDABLE or DELETABLE or CLONEABLE; if DATA ~ &amp;quot;.+&amp;quot;;&lt;br /&gt;
 &amp;lt;/okp:simplifierRules&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''FPRM (Parameters):'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#v1&lt;br /&gt;
extractNotes.b=true&lt;br /&gt;
simplifierRules=if ADDABLE or DELETABLE or CLONEABLE; if DATA ~ &amp;quot;.+&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Font Mapping==&lt;br /&gt;
&lt;br /&gt;
The font mapping can be considered as a filter's ability to automatically substitute font information in the target document on the fly, according to a provided configuration - this helps to reduce the amount of reformatting and post-translation DTP. It is supported by IDML and OpenXML (DOCX, PPTX and XLSX documents) filters at the moment.&lt;br /&gt;
&lt;br /&gt;
The following font mapping configuration options are available:&lt;br /&gt;
* The source locale regular expression pattern: &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;en.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;en-UK&amp;lt;/code&amp;gt;, etc. It can be ommited to apply the mapping to any source locale.&lt;br /&gt;
* The target locale regular expression pattern: &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ru.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ru-RU&amp;lt;/code&amp;gt;, etc. It can be ommited to apply the mapping to any target locale.&lt;br /&gt;
* The source font name regular expression pattern: &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Arial.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;, etc. It can be ommited to apply the mapping to any source font name found.&lt;br /&gt;
* The target font name: &amp;lt;code&amp;gt;Arial&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;, etc. It should not be empty. And if it is made so, the mapping configuration is ignored.&lt;br /&gt;
&lt;br /&gt;
Also, the configured font mappings are applied in the order they are stated. And the final target font value is determined by a sequential&lt;br /&gt;
substitution of the source font values. I.e. if there is more than one mapping:&lt;br /&gt;
# &amp;lt;code&amp;gt;Arial&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Sans Serif&amp;lt;/code&amp;gt;&lt;br /&gt;
then the first mapping will produce &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt; replacement and the second one will be applied to this new value, thus, ending up with the &amp;lt;code&amp;gt;Sans Serif&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters serialisation format can look like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.sourceLocalePattern=en.*&lt;br /&gt;
fontMappings.0.targetLocalePattern=ru.*&lt;br /&gt;
fontMappings.0.sourceFontPattern=Times.*&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.1.sourceLocalePattern=ru&lt;br /&gt;
fontMappings.1.targetLocalePattern=fr&lt;br /&gt;
fontMappings.1.sourceFontPattern=The Sims Sans&lt;br /&gt;
fontMappings.1.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When source locale, target locale and source font are omitted:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And this is the same as the abovementioned:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.sourceLocalePattern=.*&lt;br /&gt;
fontMappings.0.targetLocalePattern=.*&lt;br /&gt;
fontMappings.0.sourceFontPattern=.*&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=936</id>
		<title>OpenXML Filter</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=OpenXML_Filter&amp;diff=936"/>
		<updated>2022-06-21T14:42:42Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Excel Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Filters Header}}&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This filter allows you to process the different types of documents of the Microsoft Office suite from 2007 and later, such as DOCX (text documents), XLSX (spreadsheets) and PPTX (presentations).  These documents are based on the OpenXML format, opposed to the binary formats used by pre-2007 versions of Office.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
The filter parameters are divided into '''General Options''', which apply to all formats, and format-specific options.&lt;br /&gt;
&lt;br /&gt;
===General Options===&lt;br /&gt;
; Translate Document Properties&lt;br /&gt;
: When checked, exposes the following document properties for translation: title, subject, creator, description, category, keywords, content status. Default: on.&lt;br /&gt;
; Translate Comments&lt;br /&gt;
: When checked, exposes document comments for translation.  Default: on.&lt;br /&gt;
; Clean Tags Aggressively&lt;br /&gt;
: When checked, strips additional formatting tags related to text spacing.  This is meant to improve filtering in cases where Office documents were converted from other formats (in particular, PDF), and imperfect conversion added a lot of extra formatting noise.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== Word Options ===&lt;br /&gt;
; Translated Headers and Footers&lt;br /&gt;
: When checked, exposes header and footer content for translation.  Default: on.&lt;br /&gt;
; Translated Hidden Text&lt;br /&gt;
: When checked, exposes hidden text for translation.  Default: on.&lt;br /&gt;
; Exclude Graphical Metadata&lt;br /&gt;
: When not checked, labels associated with drawings and word art are exposed for translation.  When checked, these labels (which are frequently not displayed in the document) are suppressed. Default: off.&lt;br /&gt;
; Styles to Exclude&lt;br /&gt;
: Text using any of the selected styles will not be exposed for translation . Default: none.&lt;br /&gt;
&lt;br /&gt;
=== Excel Options ===&lt;br /&gt;
; Translate Hidden Rows and Columns&lt;br /&gt;
: When checked, hidden rows and columns are exposed for translation.  Default: off.&lt;br /&gt;
; Colors to Exclude&lt;br /&gt;
: Text with a foreground color matching any of the selected colors in this option will be excluded from translation.  These colors correspond to the standard color palette of Excel 2010.  The configuration itself stores these values as RGB, so specific colors not explicitly listed here may be excluded by modifying the .fprm file by hand.  Default: none.&lt;br /&gt;
; Worksheet Configurations&lt;br /&gt;
: The list of configurations spotting the exclusion from translation rows and/or columns and/or marking such rows and/or columns as metadata per a worksheet name pattern.&lt;br /&gt;
: For one configuration it is possible to specify:&lt;br /&gt;
:* Name Pattern - a regular expression, by which all other operations are matched and applied. For formatting options please refer to &amp;lt;code&amp;gt;java.util.regex.Pattern&amp;lt;/code&amp;gt;. E.g.: &amp;lt;code&amp;gt;Sheet1&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Rows - a list of integers, pointing out row numbers that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;1,2&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Excluded Columns - a list of ALPHA-26 numbers, specifying columns that are excluded from translation/extraction. E.g.: &amp;lt;code&amp;gt;A,B&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Rows - a list of integers, pointing out row numbers that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;3,4&amp;lt;/code&amp;gt;.&lt;br /&gt;
:* Metadata Columns - a list of ALPHA-26 numbers, specifying columns that are treated and extracted as metadata. E.g.: &amp;lt;code&amp;gt;C,D&amp;lt;/code&amp;gt;.&lt;br /&gt;
: Let's consider a simple table as an example and find out what can be done with all those configurations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|Metadata Header A1 !! colspan=&amp;quot;2&amp;quot;|Metadata Header C1&lt;br /&gt;
|-&lt;br /&gt;
! Metadata Header A2 !! Metadata Header B2 || Metadata Header C2 !! Metadata Header D2&lt;br /&gt;
|-&lt;br /&gt;
| A3 || B3 || C3 || Metadata D3&lt;br /&gt;
|-&lt;br /&gt;
| A4 || B4 || C4 || Metadata D4&lt;br /&gt;
|-&lt;br /&gt;
| A5 || B5 || C5 || Metadata D5&lt;br /&gt;
|}&lt;br /&gt;
: Let's suppose we would like to translate columns A and B, and treat column D as metadata for each of the translatable cell in a row. At the same time, we would like to consider the 1st and 2nd rows as metadata about the metadata in columns. And, we would like not to extract the 5th row.&lt;br /&gt;
: All these requirements can be written as the following configurations (I am using the &amp;lt;code&amp;gt;net.sf.okapi.common.ParametersString&amp;lt;/code&amp;gt; format at the moment):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
worksheetConfigurations.number.i=1&lt;br /&gt;
worksheetConfigurations.0.namePattern=Sheet1&lt;br /&gt;
worksheetConfigurations.0.excludedRows=5&lt;br /&gt;
worksheetConfigurations.0.excludedColumns=C&lt;br /&gt;
worksheetConfigurations.0.metadataRows=1,2&lt;br /&gt;
worksheetConfigurations.0.metadataColumns=D&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Then, the extraction to XLIFF should look like that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;group id=&amp;quot;P76C545-sg1&amp;quot; resname=&amp;quot;Sheet1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg1&amp;quot; resname=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg2&amp;quot; resname=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg3&amp;quot; resname=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D3&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu1&amp;quot; resname=&amp;quot;Sheet1!A3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu2&amp;quot; resname=&amp;quot;Sheet1!B3&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B3&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg4&amp;quot; resname=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D4&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu3&amp;quot; resname=&amp;quot;Sheet1!A4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;A4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
    &amp;lt;trans-unit id=&amp;quot;P147242AB-tu4&amp;quot; resname=&amp;quot;Sheet1!B4&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source xml:lang=&amp;quot;en&amp;quot;&amp;gt;B4&amp;lt;/source&amp;gt;&lt;br /&gt;
      &amp;lt;target xml:lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;/target&amp;gt;&lt;br /&gt;
    &amp;lt;/trans-unit&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
  &amp;lt;group id=&amp;quot;P132303AB-sg5&amp;quot; resname=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;context-group name=&amp;quot;row-metadata&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;context context-type=&amp;quot;x-Metadata Header C1;Metadata Header D2&amp;quot;&amp;gt;Metadata D5&amp;lt;/context&amp;gt;&lt;br /&gt;
    &amp;lt;/context-group&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
; Exclude Marked Columns in Each Sheet (&amp;lt;span class=&amp;quot;red&amp;quot;&amp;gt;deprecated&amp;lt;/span&amp;gt;, may be removed at any time, please use the worksheet configurations instead)&lt;br /&gt;
: When checked, columns selected in the &amp;quot;Sheet # Columns to Exclude&amp;quot; lists will be excluded from translation.  The filter allows for sheets 1 and 2 to be configured individually.  Sheets 3 and higher must be configured as a single group.  Default: off.&lt;br /&gt;
&lt;br /&gt;
=== PowerPoint Options ===&lt;br /&gt;
; Translate Notes&lt;br /&gt;
: When checked, expose slide notes for translation.  Default: off.&lt;br /&gt;
; Translate Masters&lt;br /&gt;
: When checked, expose master slides for translation.  This will also expose for translation content from layouts that are currently in use by at least one slide.  Default: off.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
* Various, see [https://bitbucket.org/okapiframework/okapi/issues?status=new&amp;amp;title=~OpenXML the issues list].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=Filters&amp;diff=886</id>
		<title>Filters</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=Filters&amp;diff=886"/>
		<updated>2021-10-06T07:19:14Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Font Mapping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Filters are the components that convert input documents from their native file format into a common internal set of [[Glossary#Resource|resources]] that all Okapi components use. The extracted content can be re-written into the original file format. When using the steps, the extraction is done by the [[Raw Document to Filter Events Step]] and the re-writing by the [[Filter Events to Raw Document Step]].&lt;br /&gt;
&lt;br /&gt;
Note: The [[Okapi Filters Plugin for OmegaT]] allows you to use some of the filters directly from [http://www.omegat.org OmegaT].&lt;br /&gt;
&lt;br /&gt;
==List of the Filters==&lt;br /&gt;
&lt;br /&gt;
The framework distribution comes with the following filters:&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;8&amp;quot; width=100%&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* [[Archive Filter]]&lt;br /&gt;
* [[DTD Filter]]&lt;br /&gt;
* [[Doxygen Filter]]&lt;br /&gt;
* [[HTML Filter]]&lt;br /&gt;
* [[HTML5-ITS Filter]]&lt;br /&gt;
* [[ICML Filter]]&lt;br /&gt;
* [[IDML Filter]]&lt;br /&gt;
* [[JSON Filter]]&lt;br /&gt;
* [[Markdown Filter]]&lt;br /&gt;
* [[MIF Filter]]&lt;br /&gt;
* [[Moses Text Filter]]&lt;br /&gt;
* [[Multi-Parsers Filter]]&lt;br /&gt;
* [[OpenOffice Filter]]&lt;br /&gt;
* [[OpenXML Filter|OpenXML (MS Office) Filter]]&lt;br /&gt;
|&lt;br /&gt;
* [[PDF Filter]]&lt;br /&gt;
* [[Pensieve TM Filter]]&lt;br /&gt;
* [[PHP Content Filter]]&lt;br /&gt;
* [[Plain Text Filter]]&lt;br /&gt;
* [[PO Filter]]&lt;br /&gt;
* [[Properties Filter]]&lt;br /&gt;
* [[Rainbow Translation Kit Filter]]&lt;br /&gt;
* [[Regex Filter]]&lt;br /&gt;
* [[SDL Trados Package Filter]]&lt;br /&gt;
* [[Simplification Filter]]&lt;br /&gt;
* [[Table Filter]]&lt;br /&gt;
* [[TMX Filter]]&lt;br /&gt;
* [[Trados-Tagged RTF Filter]]&lt;br /&gt;
|&lt;br /&gt;
* [[Transifex Filter]]&lt;br /&gt;
* [[TS Filter]]&lt;br /&gt;
* [[TTX Filter]]&lt;br /&gt;
* [[TXML Filter]]&lt;br /&gt;
* [[Wiki Filter]]&lt;br /&gt;
* [[Vignette Filter]]&lt;br /&gt;
* [[XLIFF Filter]]&lt;br /&gt;
* [[XLIFF-2 Filter]]&lt;br /&gt;
* [[XML Filter]]&lt;br /&gt;
* [[XML Stream Filter]]&lt;br /&gt;
* [[YAML Filter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Supported File Formats==&lt;br /&gt;
&lt;br /&gt;
The following is a list of some of the file formats supported by the distribution through [[Understanding Filter Configurations|pre-defined configurations]]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Format''' || '''Extensions''' || '''Pre-Defined Configuration''' || '''Filter''' || '''Notes'''&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Android Strings || .xml || &amp;lt;code&amp;gt;okf_xml-AndroidStrings&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Apple Stringsdict || .stringsdict || &amp;lt;code&amp;gt;okf_xml-AppleStringsdict&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Archive || .zip || &amp;lt;code&amp;gt;okf_archive&amp;lt;/code&amp;gt; || [[Archive Filter]] || Meta filter that processes zip files with various formats as one file.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Auto Xliff || .xlf, .xliff || &amp;lt;code&amp;gt;okf_autoxliff&amp;lt;/code&amp;gt; || [[Auto Xliff Filter]] || Detects the version of an XLIFF file and then hands parsing off to the appropriate filter &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| CSV (Comma-separated values files) || .csv, .txt || &amp;lt;code&amp;gt;okf_table_csv&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| CSV (Multiple complex sub-formats) || .csv || &amp;lt;code&amp;gt;okf_multiparsers&amp;lt;/code&amp;gt; || [[Multi-Parsers Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DITA || .dita, .ditamap, .xml || &amp;lt;code&amp;gt;okf_xmlstream-dita&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DocBook v5.0 || .xml || &amp;lt;code&amp;gt;okf_xml-docbook&amp;lt;/code&amp;gt; || [[XML Filter]] || Since Okapi 1.42. &amp;amp;lt;footnote&amp;gt; is not handled properly.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DokuWiki pages || .txt || &amp;lt;code&amp;gt;okf_wiki&amp;lt;/code&amp;gt; || [[Wiki Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Doxygen-commented files || .c, .h, cpp || &amp;lt;code&amp;gt;okf_doxygen&amp;lt;/code&amp;gt; || [[Doxygen Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DTD || .dtd || &amp;lt;code&amp;gt;okf_dtd&amp;lt;/code&amp;gt; || [[DTD Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Fixed-Width Columns Table || .txt || &amp;lt;code&amp;gt;okf_table_fwc&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Idiom WorldServer XLIFF || .xlf || &amp;lt;code&amp;gt;okf_xliff-iws&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| InCopy ICML || .wcml || &amp;lt;code&amp;gt;okf_icml&amp;lt;/code&amp;gt; || [[ICML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| InDesign IDML || .idml || &amp;lt;code&amp;gt;okf_idml&amp;lt;/code&amp;gt; || [[IDML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| iOS/Mac Strings|| .strings || &amp;lt;code&amp;gt;okf_regex-macStrings&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java Properties || .properties || &amp;lt;code&amp;gt;okf_properties&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java Properties (Output not escaped) || .properties || &amp;lt;code&amp;gt;okf_properties-outputNotEscaped&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java XML Properties || .xml || &amp;lt;code&amp;gt;okf_xml-JavaProperties&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java XML Properties (HTML strings) || .xml || &amp;lt;code&amp;gt;okf_xmlstream-JavaPropertiesHTML&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| JSON || .json || &amp;lt;code&amp;gt;okf_json&amp;lt;/code&amp;gt; || [[JSON Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Haiku CatKeys || .catkeys || &amp;lt;code&amp;gt;okf_table_catkeys&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML (any) || .html, .htm || &amp;lt;code&amp;gt;okf_html&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML (Well-formed, and XHTML) || .html, .htm|| &amp;lt;code&amp;gt;okf_html-wellFormed&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML5 (and XHTML5) || .html, .htm|| &amp;lt;code&amp;gt;okf_itshtml5&amp;lt;/code&amp;gt; || [[HTML5-ITS Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Markdown || .md || &amp;lt;code&amp;gt;okf_markdown&amp;lt;/code&amp;gt; || [[Markdown Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Excel 2007/2010 || .xlsx, .xlsm, .xltx, .xltm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft PowerPoint 2007/2010 || .pptx, .pptm, .potx, .potm, .ppsx, .ppsm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Visio || .vsdx, .vsdm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Word 2007/2010 || .docx, .docm, .dotx, .dotm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| MIF || .mif || &amp;lt;code&amp;gt;okf_mif&amp;lt;/code&amp;gt; || [[MIF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Moses Text || .txt || &amp;lt;code&amp;gt;okf_mosestext&amp;lt;/code&amp;gt; || [[Moses Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Calc || .ods, .ots || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Draw || .odg, .otg || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Impress || .odp, .otp || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Writer || .odt, .ott || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PDF || .pdf || &amp;lt;code&amp;gt;okf_pdf&amp;lt;/code&amp;gt; || [[PDF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Pensieve TM]] || .pentm || &amp;lt;code&amp;gt;okf_pensieve&amp;lt;/code&amp;gt; || [[Pensieve TM Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PHP Content || .php || &amp;lt;code&amp;gt;okf_phpcontent&amp;lt;/code&amp;gt; || [[PHP Content Filter]] || Can be used as a subfilter only&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Plain Text (Line = text unit) || .txt || &amp;lt;code&amp;gt;okf_plaintext&amp;lt;/code&amp;gt; || [[ Plain Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Plain Text (Paragraph = text unit) || .txt || &amp;lt;code&amp;gt;okf_plaintext_paragraphs&amp;lt;/code&amp;gt; || [[Plain Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PO || .po || &amp;lt;code&amp;gt;okf_po&amp;lt;/code&amp;gt; || [[PO Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PO (Monolingual style) || .po || &amp;lt;code&amp;gt;okf_po-monolingual&amp;lt;/code&amp;gt; || [[PO Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Rainbow Translation Kit manifests || .rkm || &amp;lt;code&amp;gt;okf_rainbowkit&amp;lt;/code&amp;gt; || [[Rainbow Translation Kit Filter]] || Used as a tkit reader only&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Regex (Any text-based format) || .txt || &amp;lt;code&amp;gt;okf_regex&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| RDF (Mozilla RDF) || .rdf || &amp;lt;code&amp;gt;okf_xml-MozillaRDF&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| RESX || .resx || &amp;lt;code&amp;gt;okf_xml-resx&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDLPPX || .sdlppx || &amp;lt;code&amp;gt;okf_sdlpackage&amp;lt;/code&amp;gt; || [[SDL Trados Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDLRPX || .sdlrpx || &amp;lt;code&amp;gt;okf_sdlpackage&amp;lt;/code&amp;gt; || [[SDL Trados Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDL[[XLIFF]] || .sdlxlf || &amp;lt;code&amp;gt;okf_xliff-sdl&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Skype Language Files || .lang || &amp;lt;code&amp;gt;okf_properties-skypeLang&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SRT (Sub-Rip Text, sub-titles files) || .srt || &amp;lt;code&amp;gt;okf_regex-srt&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Tab-Delimiter files || .tsv, .txt || &amp;lt;code&amp;gt;okf_table_tsv&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Tex files || .tex || &amp;lt;code&amp;gt;okf_tex&amp;lt;/code&amp;gt; || [[TEX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[TMX]] || .tmx || &amp;lt;code&amp;gt;okf_tmx&amp;lt;/code&amp;gt; || [[TMX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Transifex project || .txp || &amp;lt;code&amp;gt;okf_transifex&amp;lt;/code&amp;gt; || [[Transifex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Trados-Tagged RTF || .rtf || &amp;lt;code&amp;gt;okf_tradosrtf&amp;lt;/code&amp;gt; || [[Trados-Tagged RTF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TS - Qt TS files || .ts || &amp;lt;code&amp;gt;okf_ts&amp;lt;/code&amp;gt; || [[TS Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TTX - Trados TagEditor TTX files || .ttx || &amp;lt;code&amp;gt;okf_ttx&amp;lt;/code&amp;gt; || [[TTX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TXML - Wordfast Pro TXML files || .txml || &amp;lt;code&amp;gt;okf_txml&amp;lt;/code&amp;gt; || [[TXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Vignette Export/Import Content || .xml || &amp;lt;code&amp;gt;okf_vignette&amp;lt;/code&amp;gt; || [[Vignette Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XHTML || .html, .htm || &amp;lt;code&amp;gt;okf_html-wellFormed&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| WIX (Windows Installer XML) localization files || .wix || &amp;lt;code&amp;gt;okf_xml-WixLocalization&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[XLIFF]] v1.2 || .xlf, .xliff || &amp;lt;code&amp;gt;okf_xliff&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[XLIFF]] v2 || .xlf || &amp;lt;code&amp;gt;okf_xliff2&amp;lt;/code&amp;gt; || [[XLIFF-2 Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XML (Generic, using [[ITS]] defaults) || .xml || &amp;lt;code&amp;gt;okf_xml&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XML (Generic, using stream reader) || .xml || &amp;lt;code&amp;gt;okf_xmlstream&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| YAML (Generic YAML filter) || .yml, .yaml || &amp;lt;code&amp;gt;okf_yaml&amp;lt;/code&amp;gt; || [[YAML Filter]] ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that most filters allow you to [[Understanding Filter Configurations|create your own configurations]] to support more file formats.&lt;br /&gt;
&lt;br /&gt;
==Code Simplification Rules==&lt;br /&gt;
&lt;br /&gt;
All filters support code simplification rules. By default the [[Inline Codes Simplifier Step]], [[Simplification Filter]] and [[Post-segmentation Inline Codes Removal Step]] maximize the trimming and merging (aka simplification) of inline codes. In some cases this may not be desired. The simplification rules allow you to override the default behavior and prevent specific codes from being trimmed or merged.&lt;br /&gt;
&lt;br /&gt;
===General Syntax===&lt;br /&gt;
&lt;br /&gt;
The rules parser ignores irrelevant whitespace. Rules can be separated by spaces, newlines or nothing. This makes it easier to accommodate various container formats and their whitespace normalization rules. When a rule applies it means &amp;quot;do not simplify the match code&amp;quot;. Uppercase tokens are constants and predefined by the rule parser. Multiple rules are always OR'ed together.&lt;br /&gt;
&lt;br /&gt;
For more details see the JavaCC grammar: &amp;lt;code&amp;gt;../okapi-core/src/main/java/net/sf/okapi/core/simplifierrules/SimplifierRules.jj&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Rule Examples===&lt;br /&gt;
&lt;br /&gt;
If Code has any of these flags then don't simplify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DELETABLE or ADDABLE or CLONEABLE;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;=&amp;quot; is string match&lt;br /&gt;
Match basic TAGTYPE opening, closing or standalone &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA = &amp;quot;a&amp;quot; and TAGTYPE = OPENING;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;~&amp;quot; is regex match&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA ~ &amp;quot;a.*&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can negate any of the match operators &lt;br /&gt;
Don't simplify if the DATA does not match the regex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA !~ &amp;quot;a.*&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Match on type, linebreak in this case, don't simplify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if the Code is a linebreak if TYPE = &amp;quot;lb&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't simplify any rich text types&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;bold&amp;quot; or TYPE = &amp;quot;italic&amp;quot; or TYPE = &amp;quot;underline&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expressions can be recursive (supports embedded parens)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;bold&amp;quot; or (DATA = &amp;quot;bar&amp;quot; or (DATA = &amp;quot;foo&amp;quot; and TYPE = &amp;quot;underline&amp;quot;));&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===Filter Config Examples===&lt;br /&gt;
&lt;br /&gt;
Examples of using simplifier rules within the filter config formats used by Okapi.&lt;br /&gt;
&lt;br /&gt;
'''YAML:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
simplifierRules: |&lt;br /&gt;
  if ADDABLE or DELETABLE or CLONEABLE;&lt;br /&gt;
  if DATA = &amp;quot;&amp;lt;br/&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;font&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;/font&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
  if DATA ~ &amp;quot;\\&amp;lt;font.+&amp;quot; or DATA ~ &amp;quot;\\&amp;lt;img.+&amp;quot; or DATA ~ &amp;quot;\\&amp;lt;a.+&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ITS:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;its:rules xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot; version=&amp;quot;1.0&amp;quot; xmlns:itsx=&amp;quot;http://www.w3.org/2008/12/its-extensions&amp;quot; xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- See ITS specification at: http://www.w3.org/TR/its/ --&amp;gt;&lt;br /&gt;
 &amp;lt;its:translateRule selector=&amp;quot;//*&amp;quot; translate=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;its:withinTextRule selector=&amp;quot;//codeph&amp;quot; withinText=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;its:withinTextRule selector=&amp;quot;//ph&amp;quot; withinText=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;okp:simplifierRules&amp;gt;&lt;br /&gt;
 if ADDABLE or DELETABLE or CLONEABLE; if DATA ~ &amp;quot;.+&amp;quot;;&lt;br /&gt;
 &amp;lt;/okp:simplifierRules&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''FPRM (Parameters):'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#v1&lt;br /&gt;
extractNotes.b=true&lt;br /&gt;
simplifierRules=if ADDABLE or DELETABLE or CLONEABLE; if DATA ~ &amp;quot;.+&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Font Mapping==&lt;br /&gt;
&lt;br /&gt;
The font mapping can be considered as filter's ability to automatically substitute font information in the target document on the fly, according to a provided configuration - this helps to reduce the amount of reformatting and post-translation DTP. It is supported by IDML and OpenXML (DOCX and PPTX documents) filters at the moment.&lt;br /&gt;
&lt;br /&gt;
The following font mapping configuration options are available:&lt;br /&gt;
* The source locale regular expression pattern: &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;en.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;en-UK&amp;lt;/code&amp;gt;, etc. It can be ommited to apply the mapping to any source locale.&lt;br /&gt;
* The target locale regular expression pattern: &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ru.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ru-RU&amp;lt;/code&amp;gt;, etc. It can be ommited to apply the mapping to any target locale.&lt;br /&gt;
* The source font name regular expression pattern: &amp;lt;code&amp;gt;.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Arial.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;, etc. It can be ommited to apply the mapping to any source font name found.&lt;br /&gt;
* The target font name: &amp;lt;code&amp;gt;Arial&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;, etc. It should not be empty. And if it is made so, the mapping configuration is ignored.&lt;br /&gt;
&lt;br /&gt;
Also, the configured font mappings are applied in the order they are stated. And the final target font value is determined by a sequential&lt;br /&gt;
substitution of the source font values. I.e. if there is more than one mapping:&lt;br /&gt;
# &amp;lt;code&amp;gt;Arial&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Sans Serif&amp;lt;/code&amp;gt;&lt;br /&gt;
then the first mapping will produce &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt; replacement and the second one will be applied to this new value, thus, ending up with the &amp;lt;code&amp;gt;Sans Serif&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters serialisation format can look like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.sourceLocalePattern=en.*&lt;br /&gt;
fontMappings.0.targetLocalePattern=ru.*&lt;br /&gt;
fontMappings.0.sourceFontPattern=Times.*&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.1.sourceLocalePattern=ru&lt;br /&gt;
fontMappings.1.targetLocalePattern=fr&lt;br /&gt;
fontMappings.1.sourceFontPattern=The Sims Sans&lt;br /&gt;
fontMappings.1.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When source locale, target locale and source font are omitted:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And this is the same as the abovementioned:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.sourceLocalePattern=.*&lt;br /&gt;
fontMappings.0.targetLocalePattern=.*&lt;br /&gt;
fontMappings.0.sourceFontPattern=.*&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=FAQ&amp;diff=885</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=FAQ&amp;diff=885"/>
		<updated>2021-10-06T06:56:22Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Is there a users group or a support mailing list? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Capabilities==&lt;br /&gt;
&lt;br /&gt;
====What formats are supported?====&lt;br /&gt;
&lt;br /&gt;
The framework offers filters for many file formats, including XML, XLIFF, TMX, HTML, DOCX, ODT, Properties, PO, and many more.&amp;lt;br&amp;gt;&lt;br /&gt;
For a more complete list of the supported formats, see the &amp;quot;[[Filters]]&amp;quot; page.&lt;br /&gt;
&lt;br /&gt;
Note that you can also create your own filter configurations to support some formats. You can also create your own filters and use them seamlessly with the Okapi tools.&lt;br /&gt;
&lt;br /&gt;
====How do I extract text for translation?====&lt;br /&gt;
&lt;br /&gt;
See the article &amp;quot;[[How to Extract Text for Translation]]&amp;quot; in the [[Knowledge Base]].&lt;br /&gt;
&lt;br /&gt;
====Does Okapi provide a translation editor?====&lt;br /&gt;
&lt;br /&gt;
Not at this time. The Okapi tools allow you to create translation packages in various formats that can be opened in different translation editors such as OmegaT, MemoQ, Trados Workbench, Swordfish, Wordfast, etc.&lt;br /&gt;
&lt;br /&gt;
For translating XLIFF files see: &amp;quot;[[How to Translate XLIFF Documents]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====Does Okapi provide a TM (Translation Memory)?====&lt;br /&gt;
&lt;br /&gt;
Yes. There are currently two TM engines implemented in the framework:&lt;br /&gt;
&lt;br /&gt;
* [[Pensieve TM]] is the main TM engine.&lt;br /&gt;
* [[SimpleTM TM]] is a limited and older engine that '''is being progressively phased out'''.&lt;br /&gt;
&lt;br /&gt;
You can also use third-part TM engines through the the different [[Connectors|connectors]] that the framework provides. For example: the [[Translate Toolkit TM Connector|Translate Toolkit TM]], [[GlobalSight TM Connector|GlobalSight TM]], the [[OpenTran Translation Repository Connector|OpenTran Translation Repository]], [[MyMemory TM Connector|MyMemory]], etc. For a complete list and more details see the &amp;quot;[[Connectors]]&amp;quot; page.&lt;br /&gt;
&lt;br /&gt;
====Does Okapi provide a MT (Machine Translation) system?====&lt;br /&gt;
&lt;br /&gt;
Not at this time. But you can use different third-party MT system using one of the connectors distributed with the framework. For example you can work with [[Google MT v2 Connector|Google MT]], [[Apertium MT Connector|Apertium MT]], [[Microsoft Translator Connector|Microsoft Translator]], etc. For a complete list, see the [[Connectors|Connectors page]].&lt;br /&gt;
&lt;br /&gt;
====Why is there several distributions, isn't Java cross-platform?====&lt;br /&gt;
&lt;br /&gt;
Yes, Java is cross-platform, and most of the Okapi code runs anywhere Java runs.&lt;br /&gt;
However, for a better internationalization support and a more seamless integration with each platform, we have selected to use Eclipse SWT (http://www.eclipse.org/swt) as the foundation for the UI of our applications. That library requires a different distribution for each platform and architecture.&lt;br /&gt;
&lt;br /&gt;
Okapi's source code has been carefully designed to separate UI-dependant code and non-UI code, so most of the components (such as the [[Filters]], the [[Steps]] and the [[Connectors]]) can be used on any platform.&lt;br /&gt;
&lt;br /&gt;
====Can I change the Java VM settings when running the tools?====&lt;br /&gt;
&lt;br /&gt;
Yes. See [[How to Change the Java Parameters for Rainbow]]. You can follow the same steps for all Okapi tools.&lt;br /&gt;
&lt;br /&gt;
==Simple Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
====Is there a Getting Started guide?====&lt;br /&gt;
&lt;br /&gt;
Yes. See the &amp;quot;[[Getting Started]]&amp;quot; page.&lt;br /&gt;
&lt;br /&gt;
====When I try to start Rainbow/Ratel/CheckMate nothing happens. What is wrong?====&lt;br /&gt;
&lt;br /&gt;
* Check that you have the proper version of Java (1.7 or above).&lt;br /&gt;
* Make sure you have installed the correct distribution for your platform.&lt;br /&gt;
* If your machine is 32-bit make sure to have installed the 32-bit distribution.&lt;br /&gt;
* If your machine is 64-bit make sure to have installed the 64-bit distribution.&lt;br /&gt;
&lt;br /&gt;
==Licenses==&lt;br /&gt;
&lt;br /&gt;
====Under what licence the Okapi Framework is developed?====&lt;br /&gt;
&lt;br /&gt;
* The source code is under [https://www.apache.org/licenses/LICENSE-2.0 Apache Licence version 2.0].&lt;br /&gt;
* The documentation is under [http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike License (CC-BY-SA)].&lt;br /&gt;
&lt;br /&gt;
====Can I use Okapi's components in my applications?====&lt;br /&gt;
&lt;br /&gt;
Yes. The project uses the Apache license which allows open-source or commercial products to use our applications and components. See more information the license at [https://www.apache.org/licenses/LICENSE-2.0].&lt;br /&gt;
&lt;br /&gt;
==Support==&lt;br /&gt;
&lt;br /&gt;
====Is there a users group or a support mailing list?====&lt;br /&gt;
&lt;br /&gt;
Yes. There are two main mailing lists. Both have public archives, and both require registration to post a message:&lt;br /&gt;
&lt;br /&gt;
* [https://groups.google.com/g/okapi-users Okapi users] is the group and mailing list '''for the end users'''.&lt;br /&gt;
* [http://groups.google.com/g/okapi-devel Okapi developers] is the group and mailing list '''for the developers''' working on the source code.&lt;br /&gt;
&lt;br /&gt;
====How do I report bugs or request enhancement?====&lt;br /&gt;
&lt;br /&gt;
* You can post a bug report or an enhancement request on [https://bitbucket.org/okapiframework/okapi/issues the issues tracking page] if you have a Bitbucket account (preferred).&lt;br /&gt;
&lt;br /&gt;
* You can post a message to [https://groups.google.com/g/okapi-users the Okapi users group] if you are part of the group.&lt;br /&gt;
&lt;br /&gt;
* You can just [mailto:okapitools@opentag.com&amp;amp;subject=Feedback send feedback by email].&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous==&lt;br /&gt;
&lt;br /&gt;
====What does 'Okapi' mean?====&lt;br /&gt;
&lt;br /&gt;
An okapi is an African animal looking somewhat like [http://en.wikipedia.org/wiki/Okapi a cross between a zebra and a giraffe]. Okapi is pronounced [http://en.wikipedia.org/wiki/Wikipedia:IPA_for_English /oʊˈkɑːpɪ/] ([http://www.m-w.com/cgi-bin/audio.pl?okapi001.wav=okapi hear it])&lt;br /&gt;
&lt;br /&gt;
The usage of this name for the framework has its roots to much older projects. At some point it was an acronym for &amp;quot;Open Kit API&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====What happened to the .NET Okapi?====&lt;br /&gt;
&lt;br /&gt;
The older version of the Okapi Framework for .NET is no longer developed. Its distribution and source code is still available here: http://sourceforge.net/projects/okapi/. All new development is now done in the Java branch.&lt;br /&gt;
&lt;br /&gt;
====Where is Olifant?====&lt;br /&gt;
&lt;br /&gt;
Olifant, the TMX editor, is currently only part of the .NET Okapi. It is still available [http://sourceforge.net/projects/okapi/files/ from the SourceForge project]. Note that Olifant is for Windows only.&lt;br /&gt;
&lt;br /&gt;
==For developers==&lt;br /&gt;
&lt;br /&gt;
====Getting set up====&lt;br /&gt;
&lt;br /&gt;
* Check out the source code from Bitbucket using git clone: https://bitbucket.org/okapiframework/okapi&lt;br /&gt;
* Or, if you want to submit pull requests, first create a fork of the Okapi project. &lt;br /&gt;
* Import into your IDE. For example, in Eclipse go to File &amp;gt; Import &amp;gt; Maven &amp;gt; Existing Maven project. &lt;br /&gt;
If you want to keep several distinct Okapi repositories in the same Eclipse workspace (for instance, your fork and the main Okapi project), you need to assign a name template under the &amp;quot;Advanced&amp;quot; section in the first step of the import wizard. &lt;br /&gt;
* The &amp;quot;master&amp;quot; branch contains the latest release version. The &amp;quot;dev&amp;quot; branch contains the current work (the &amp;quot;snapshot&amp;quot; in Maven terms). &lt;br /&gt;
* See also: https://bitbucket.org/okapiframework/okapi/wiki/How%20to%20Contribute&lt;br /&gt;
Happy coding!&lt;br /&gt;
&lt;br /&gt;
====How to build okapi-lib locally====&lt;br /&gt;
&lt;br /&gt;
The Okapi Framework consists of Maven projects. However, in order to build the apps and lib projects locally, you need to use the Ant build configurations. &lt;br /&gt;
&lt;br /&gt;
For instance, to create a local version of okapi-lib.jar, go to &amp;lt;OKAPI_HOME&amp;gt;/deployment/maven/ and run ant -f build_okapi-lib.xml init okapiLib. The jar will be generated in &amp;lt;OKAPI_HOME&amp;gt;/deployment/maven/dist_common/lib/. &lt;br /&gt;
&lt;br /&gt;
If you use the default build.xml by running above command without the -f option, platform-specific distributions of the apps will be created plus the platform-indipendent okapi-lib.jar.&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=FAQ&amp;diff=884</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=FAQ&amp;diff=884"/>
		<updated>2021-10-06T06:51:13Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* How do I report bugs or request enhancement? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Capabilities==&lt;br /&gt;
&lt;br /&gt;
====What formats are supported?====&lt;br /&gt;
&lt;br /&gt;
The framework offers filters for many file formats, including XML, XLIFF, TMX, HTML, DOCX, ODT, Properties, PO, and many more.&amp;lt;br&amp;gt;&lt;br /&gt;
For a more complete list of the supported formats, see the &amp;quot;[[Filters]]&amp;quot; page.&lt;br /&gt;
&lt;br /&gt;
Note that you can also create your own filter configurations to support some formats. You can also create your own filters and use them seamlessly with the Okapi tools.&lt;br /&gt;
&lt;br /&gt;
====How do I extract text for translation?====&lt;br /&gt;
&lt;br /&gt;
See the article &amp;quot;[[How to Extract Text for Translation]]&amp;quot; in the [[Knowledge Base]].&lt;br /&gt;
&lt;br /&gt;
====Does Okapi provide a translation editor?====&lt;br /&gt;
&lt;br /&gt;
Not at this time. The Okapi tools allow you to create translation packages in various formats that can be opened in different translation editors such as OmegaT, MemoQ, Trados Workbench, Swordfish, Wordfast, etc.&lt;br /&gt;
&lt;br /&gt;
For translating XLIFF files see: &amp;quot;[[How to Translate XLIFF Documents]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====Does Okapi provide a TM (Translation Memory)?====&lt;br /&gt;
&lt;br /&gt;
Yes. There are currently two TM engines implemented in the framework:&lt;br /&gt;
&lt;br /&gt;
* [[Pensieve TM]] is the main TM engine.&lt;br /&gt;
* [[SimpleTM TM]] is a limited and older engine that '''is being progressively phased out'''.&lt;br /&gt;
&lt;br /&gt;
You can also use third-part TM engines through the the different [[Connectors|connectors]] that the framework provides. For example: the [[Translate Toolkit TM Connector|Translate Toolkit TM]], [[GlobalSight TM Connector|GlobalSight TM]], the [[OpenTran Translation Repository Connector|OpenTran Translation Repository]], [[MyMemory TM Connector|MyMemory]], etc. For a complete list and more details see the &amp;quot;[[Connectors]]&amp;quot; page.&lt;br /&gt;
&lt;br /&gt;
====Does Okapi provide a MT (Machine Translation) system?====&lt;br /&gt;
&lt;br /&gt;
Not at this time. But you can use different third-party MT system using one of the connectors distributed with the framework. For example you can work with [[Google MT v2 Connector|Google MT]], [[Apertium MT Connector|Apertium MT]], [[Microsoft Translator Connector|Microsoft Translator]], etc. For a complete list, see the [[Connectors|Connectors page]].&lt;br /&gt;
&lt;br /&gt;
====Why is there several distributions, isn't Java cross-platform?====&lt;br /&gt;
&lt;br /&gt;
Yes, Java is cross-platform, and most of the Okapi code runs anywhere Java runs.&lt;br /&gt;
However, for a better internationalization support and a more seamless integration with each platform, we have selected to use Eclipse SWT (http://www.eclipse.org/swt) as the foundation for the UI of our applications. That library requires a different distribution for each platform and architecture.&lt;br /&gt;
&lt;br /&gt;
Okapi's source code has been carefully designed to separate UI-dependant code and non-UI code, so most of the components (such as the [[Filters]], the [[Steps]] and the [[Connectors]]) can be used on any platform.&lt;br /&gt;
&lt;br /&gt;
====Can I change the Java VM settings when running the tools?====&lt;br /&gt;
&lt;br /&gt;
Yes. See [[How to Change the Java Parameters for Rainbow]]. You can follow the same steps for all Okapi tools.&lt;br /&gt;
&lt;br /&gt;
==Simple Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
====Is there a Getting Started guide?====&lt;br /&gt;
&lt;br /&gt;
Yes. See the &amp;quot;[[Getting Started]]&amp;quot; page.&lt;br /&gt;
&lt;br /&gt;
====When I try to start Rainbow/Ratel/CheckMate nothing happens. What is wrong?====&lt;br /&gt;
&lt;br /&gt;
* Check that you have the proper version of Java (1.7 or above).&lt;br /&gt;
* Make sure you have installed the correct distribution for your platform.&lt;br /&gt;
* If your machine is 32-bit make sure to have installed the 32-bit distribution.&lt;br /&gt;
* If your machine is 64-bit make sure to have installed the 64-bit distribution.&lt;br /&gt;
&lt;br /&gt;
==Licenses==&lt;br /&gt;
&lt;br /&gt;
====Under what licence the Okapi Framework is developed?====&lt;br /&gt;
&lt;br /&gt;
* The source code is under [https://www.apache.org/licenses/LICENSE-2.0 Apache Licence version 2.0].&lt;br /&gt;
* The documentation is under [http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike License (CC-BY-SA)].&lt;br /&gt;
&lt;br /&gt;
====Can I use Okapi's components in my applications?====&lt;br /&gt;
&lt;br /&gt;
Yes. The project uses the Apache license which allows open-source or commercial products to use our applications and components. See more information the license at [https://www.apache.org/licenses/LICENSE-2.0].&lt;br /&gt;
&lt;br /&gt;
==Support==&lt;br /&gt;
&lt;br /&gt;
====Is there a users group or a support mailing list?====&lt;br /&gt;
&lt;br /&gt;
Yes. There are two main mailing lists. Both have public archives, and both require registration to post a message:&lt;br /&gt;
&lt;br /&gt;
* [http://groups.yahoo.com/group/okapitools/ https://groups.yahoo.com/group/okapitools/] is the group and mailing list '''for the end users'''.&lt;br /&gt;
* [http://groups.google.com/group/okapi-devel https://groups.google.com/group/okapi-devel] is the group and mailing list '''for the developers''' working on the source code.&lt;br /&gt;
&lt;br /&gt;
====How do I report bugs or request enhancement?====&lt;br /&gt;
&lt;br /&gt;
* You can post a bug report or an enhancement request on [https://bitbucket.org/okapiframework/okapi/issues the issues tracking page] if you have a Bitbucket account (preferred).&lt;br /&gt;
&lt;br /&gt;
* You can post a message to [https://groups.google.com/g/okapi-users the Okapi users group] if you are part of the group.&lt;br /&gt;
&lt;br /&gt;
* You can just [mailto:okapitools@opentag.com&amp;amp;subject=Feedback send feedback by email].&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous==&lt;br /&gt;
&lt;br /&gt;
====What does 'Okapi' mean?====&lt;br /&gt;
&lt;br /&gt;
An okapi is an African animal looking somewhat like [http://en.wikipedia.org/wiki/Okapi a cross between a zebra and a giraffe]. Okapi is pronounced [http://en.wikipedia.org/wiki/Wikipedia:IPA_for_English /oʊˈkɑːpɪ/] ([http://www.m-w.com/cgi-bin/audio.pl?okapi001.wav=okapi hear it])&lt;br /&gt;
&lt;br /&gt;
The usage of this name for the framework has its roots to much older projects. At some point it was an acronym for &amp;quot;Open Kit API&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====What happened to the .NET Okapi?====&lt;br /&gt;
&lt;br /&gt;
The older version of the Okapi Framework for .NET is no longer developed. Its distribution and source code is still available here: http://sourceforge.net/projects/okapi/. All new development is now done in the Java branch.&lt;br /&gt;
&lt;br /&gt;
====Where is Olifant?====&lt;br /&gt;
&lt;br /&gt;
Olifant, the TMX editor, is currently only part of the .NET Okapi. It is still available [http://sourceforge.net/projects/okapi/files/ from the SourceForge project]. Note that Olifant is for Windows only.&lt;br /&gt;
&lt;br /&gt;
==For developers==&lt;br /&gt;
&lt;br /&gt;
====Getting set up====&lt;br /&gt;
&lt;br /&gt;
* Check out the source code from Bitbucket using git clone: https://bitbucket.org/okapiframework/okapi&lt;br /&gt;
* Or, if you want to submit pull requests, first create a fork of the Okapi project. &lt;br /&gt;
* Import into your IDE. For example, in Eclipse go to File &amp;gt; Import &amp;gt; Maven &amp;gt; Existing Maven project. &lt;br /&gt;
If you want to keep several distinct Okapi repositories in the same Eclipse workspace (for instance, your fork and the main Okapi project), you need to assign a name template under the &amp;quot;Advanced&amp;quot; section in the first step of the import wizard. &lt;br /&gt;
* The &amp;quot;master&amp;quot; branch contains the latest release version. The &amp;quot;dev&amp;quot; branch contains the current work (the &amp;quot;snapshot&amp;quot; in Maven terms). &lt;br /&gt;
* See also: https://bitbucket.org/okapiframework/okapi/wiki/How%20to%20Contribute&lt;br /&gt;
Happy coding!&lt;br /&gt;
&lt;br /&gt;
====How to build okapi-lib locally====&lt;br /&gt;
&lt;br /&gt;
The Okapi Framework consists of Maven projects. However, in order to build the apps and lib projects locally, you need to use the Ant build configurations. &lt;br /&gt;
&lt;br /&gt;
For instance, to create a local version of okapi-lib.jar, go to &amp;lt;OKAPI_HOME&amp;gt;/deployment/maven/ and run ant -f build_okapi-lib.xml init okapiLib. The jar will be generated in &amp;lt;OKAPI_HOME&amp;gt;/deployment/maven/dist_common/lib/. &lt;br /&gt;
&lt;br /&gt;
If you use the default build.xml by running above command without the -f option, platform-specific distributions of the apps will be created plus the platform-indipendent okapi-lib.jar.&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=Filters&amp;diff=840</id>
		<title>Filters</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=Filters&amp;diff=840"/>
		<updated>2020-07-02T16:40:17Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: /* Font Mapping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Filters are the components that convert input documents from their native file format into a common internal set of [[Glossary#Resource|resources]] that all Okapi components use. The extracted content can be re-written into the original file format. When using the steps, the extraction is done by the [[Raw Document to Filter Events Step]] and the re-writing by the [[Filter Events to Raw Document Step]].&lt;br /&gt;
&lt;br /&gt;
Note: The [[Okapi Filters Plugin for OmegaT]] allows you to use some of the filters directly from [http://www.omegat.org OmegaT].&lt;br /&gt;
&lt;br /&gt;
==List of the Filters==&lt;br /&gt;
&lt;br /&gt;
The framework distribution comes with the following filters:&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;8&amp;quot; width=100%&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* [[Archive Filter]]&lt;br /&gt;
* [[DTD Filter]]&lt;br /&gt;
* [[Doxygen Filter]]&lt;br /&gt;
* [[HTML Filter]]&lt;br /&gt;
* [[HTML5-ITS Filter]]&lt;br /&gt;
* [[ICML Filter]]&lt;br /&gt;
* [[IDML Filter]]&lt;br /&gt;
* [[JSON Filter]]&lt;br /&gt;
* [[Markdown Filter]]&lt;br /&gt;
* [[MIF Filter]]&lt;br /&gt;
* [[Moses Text Filter]]&lt;br /&gt;
* [[Multi-Parsers Filter]]&lt;br /&gt;
* [[OpenOffice Filter]]&lt;br /&gt;
* [[OpenXML Filter|OpenXML (MS Office) Filter]]&lt;br /&gt;
|&lt;br /&gt;
* [[PDF Filter]]&lt;br /&gt;
* [[Pensieve TM Filter]]&lt;br /&gt;
* [[PHP Content Filter]]&lt;br /&gt;
* [[Plain Text Filter]]&lt;br /&gt;
* [[PO Filter]]&lt;br /&gt;
* [[Properties Filter]]&lt;br /&gt;
* [[Rainbow Translation Kit Filter]]&lt;br /&gt;
* [[Regex Filter]]&lt;br /&gt;
* [[SDL Trados Package Filter]]&lt;br /&gt;
* [[Simplification Filter]]&lt;br /&gt;
* [[Table Filter]]&lt;br /&gt;
* [[TMX Filter]]&lt;br /&gt;
* [[Trados-Tagged RTF Filter]]&lt;br /&gt;
|&lt;br /&gt;
* [[Transifex Filter]]&lt;br /&gt;
* [[TS Filter]]&lt;br /&gt;
* [[TTX Filter]]&lt;br /&gt;
* [[TXML Filter]]&lt;br /&gt;
* [[Wiki Filter]]&lt;br /&gt;
* [[Vignette Filter]]&lt;br /&gt;
* [[XLIFF Filter]]&lt;br /&gt;
* [[XLIFF-2 Filter]]&lt;br /&gt;
* [[XML Filter]]&lt;br /&gt;
* [[XML Stream Filter]]&lt;br /&gt;
* [[YAML Filter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Supported File Formats==&lt;br /&gt;
&lt;br /&gt;
The following is a list of some of the file formats supported by the distribution through [[Understanding Filter Configurations|pre-defined configurations]]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Format''' || '''Extensions''' || '''Pre-Defined Configuration''' || '''Filter''' || '''Notes'''&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Android Strings || .xml || &amp;lt;code&amp;gt;okf_xml-AndroidStrings&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Apple Stringsdict || .stringsdict || &amp;lt;code&amp;gt;okf_xml-AppleStringsdict&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Archive || .zip || &amp;lt;code&amp;gt;okf_archive&amp;lt;/code&amp;gt; || [[Archive Filter]] || Meta filter that processes zip files with various formats as one file.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Auto Xliff || .xlf, .xliff || &amp;lt;code&amp;gt;okf_autoxliff&amp;lt;/code&amp;gt; || [[Auto Xliff Filter]] || Detects the version of an XLIFF file and then hands parsing off to the appropriate filter &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| CSV (Comma-separated values files) || .csv, .txt || &amp;lt;code&amp;gt;okf_table_csv&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| CSV (Multiple complex sub-formats) || .csv || &amp;lt;code&amp;gt;okf_multiparsers&amp;lt;/code&amp;gt; || [[Multi-Parsers Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DITA || .dita, .ditamap, .xml || &amp;lt;code&amp;gt;okf_xmlstream-dita&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DokuWiki pages || .txt || &amp;lt;code&amp;gt;okf_wiki&amp;lt;/code&amp;gt; || [[Wiki Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Doxygen-commented files || .c, .h, cpp || &amp;lt;code&amp;gt;okf_doxygen&amp;lt;/code&amp;gt; || [[Doxygen Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DTD || .dtd || &amp;lt;code&amp;gt;okf_dtd&amp;lt;/code&amp;gt; || [[DTD Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Fixed-Width Columns Table || .txt || &amp;lt;code&amp;gt;okf_table_fwc&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Idiom WorldServer XLIFF || .xlf || &amp;lt;code&amp;gt;okf_xliff-iws&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| InCopy ICML || .wcml || &amp;lt;code&amp;gt;okf_icml&amp;lt;/code&amp;gt; || [[ICML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| InDesign IDML || .idml || &amp;lt;code&amp;gt;okf_idml&amp;lt;/code&amp;gt; || [[IDML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| iOS/Mac Strings|| .strings || &amp;lt;code&amp;gt;okf_regex-macStrings&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java Properties || .properties || &amp;lt;code&amp;gt;okf_properties&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java Properties (Output not escaped) || .properties || &amp;lt;code&amp;gt;okf_properties-outputNotEscaped&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java XML Properties || .xml || &amp;lt;code&amp;gt;okf_xml-JavaProperties&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java XML Properties (HTML strings) || .xml || &amp;lt;code&amp;gt;okf_xmlstream-JavaPropertiesHTML&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| JSON || .json || &amp;lt;code&amp;gt;okf_json&amp;lt;/code&amp;gt; || [[JSON Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Haiku CatKeys || .catkeys || &amp;lt;code&amp;gt;okf_table_catkeys&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML (any) || .html, .htm || &amp;lt;code&amp;gt;okf_html&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML (Well-formed, and XHTML) || .html, .htm|| &amp;lt;code&amp;gt;okf_html-wellFormed&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML5 (and XHTML5) || .html, .htm|| &amp;lt;code&amp;gt;okf_itshtml5&amp;lt;/code&amp;gt; || [[HTML5-ITS Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Markdown || .md || &amp;lt;code&amp;gt;okf_markdown&amp;lt;/code&amp;gt; || [[Markdown Filter]]&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Excel 2007/2010 || .xlsx, .xlsm, .xltx, .xltm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft PowerPoint 2007/2010 || .pptx, .pptm, .potx, .potm, .ppsx, .ppsm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Visio || .vsdx, .vsdm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Word 2007/2010 || .docx, .docm, .dotx, .dotm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| MIF || .mif || &amp;lt;code&amp;gt;okf_mif&amp;lt;/code&amp;gt; || [[MIF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Moses Text || .txt || &amp;lt;code&amp;gt;okf_mosestext&amp;lt;/code&amp;gt; || [[Moses Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Calc || .ods, .ots || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Draw || .odg, .otg || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Impress || .odp, .otp || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Writer || .odt, .ott || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PDF || .pdf || &amp;lt;code&amp;gt;okf_pdf&amp;lt;/code&amp;gt; || [[PDF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Pensieve TM]] || .pentm || &amp;lt;code&amp;gt;okf_pensieve&amp;lt;/code&amp;gt; || [[Pensieve TM Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PHP Content || .php || &amp;lt;code&amp;gt;okf_phpcontent&amp;lt;/code&amp;gt; || [[PHP Content Filter]] || Can be used as a subfilter only&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Plain Text (Line = text unit) || .txt || &amp;lt;code&amp;gt;okf_plaintext&amp;lt;/code&amp;gt; || [[ Plain Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Plain Text (Paragraph = text unit) || .txt || &amp;lt;code&amp;gt;okf_plaintext_paragraphs&amp;lt;/code&amp;gt; || [[Plain Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PO || .po || &amp;lt;code&amp;gt;okf_po&amp;lt;/code&amp;gt; || [[PO Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PO (Monolingual style) || .po || &amp;lt;code&amp;gt;okf_po-monolingual&amp;lt;/code&amp;gt; || [[PO Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Rainbow Translation Kit manifests || .rkm || &amp;lt;code&amp;gt;okf_rainbowkit&amp;lt;/code&amp;gt; || [[Rainbow Translation Kit Filter]] || Used as a tkit reader only&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Regex (Any text-based format) || .txt || &amp;lt;code&amp;gt;okf_regex&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| RDF (Mozilla RDF) || .rdf || &amp;lt;code&amp;gt;okf_xml-MozillaRDF&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| RESX || .resx || &amp;lt;code&amp;gt;okf_xml-resx&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDLPPX || .sdlppx || &amp;lt;code&amp;gt;okf_sdlpackage&amp;lt;/code&amp;gt; || [[SDL Trados Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDLRPX || .sdlrpx || &amp;lt;code&amp;gt;okf_sdlpackage&amp;lt;/code&amp;gt; || [[SDL Trados Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDL[[XLIFF]] || .sdlxlf || &amp;lt;code&amp;gt;okf_xliff-sdl&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Skype Language Files || .lang || &amp;lt;code&amp;gt;okf_properties-skypeLang&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SRT (Sub-Rip Text, sub-titles files) || .srt || &amp;lt;code&amp;gt;okf_regex-srt&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Tab-Delimiter files || .tsv, .txt || &amp;lt;code&amp;gt;okf_table_tsv&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Tex files || .tex || &amp;lt;code&amp;gt;okf_tex&amp;lt;/code&amp;gt; || [[TEX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[TMX]] || .tmx || &amp;lt;code&amp;gt;okf_tmx&amp;lt;/code&amp;gt; || [[TMX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Transifex project || .txp || &amp;lt;code&amp;gt;okf_transifex&amp;lt;/code&amp;gt; || [[Transifex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Trados-Tagged RTF || .rtf || &amp;lt;code&amp;gt;okf_tradosrtf&amp;lt;/code&amp;gt; || [[Trados-Tagged RTF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TS - Qt TS files || .ts || &amp;lt;code&amp;gt;okf_ts&amp;lt;/code&amp;gt; || [[TS Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TTX - Trados TagEditor TTX files || .ttx || &amp;lt;code&amp;gt;okf_ttx&amp;lt;/code&amp;gt; || [[TTX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TXML - Wordfast Pro TXML files || .txml || &amp;lt;code&amp;gt;okf_txml&amp;lt;/code&amp;gt; || [[TXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Vignette Export/Import Content || .xml || &amp;lt;code&amp;gt;okf_vignette&amp;lt;/code&amp;gt; || [[Vignette Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XHTML || .html, .htm || &amp;lt;code&amp;gt;okf_html-wellFormed&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| WIX (Windows Installer XML) localization files || .wix || &amp;lt;code&amp;gt;okf_xml-WixLocalization&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[XLIFF]] v1.2 || .xlf, .xliff || &amp;lt;code&amp;gt;okf_xliff&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[XLIFF]] v2 || .xlf || &amp;lt;code&amp;gt;okf_xliff2&amp;lt;/code&amp;gt; || [[XLIFF-2 Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XML (Generic, using [[ITS]] defaults) || .xml || &amp;lt;code&amp;gt;okf_xml&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XML (Generic, using stream reader) || .xml || &amp;lt;code&amp;gt;okf_xmlstream&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| YAML (Generic YAML filter) || .yml, .yaml || &amp;lt;code&amp;gt;okf_yaml&amp;lt;/code&amp;gt; || [[YAML Filter]] ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that most filters allow you to [[Understanding Filter Configurations|create your own configurations]] to support more file formats.&lt;br /&gt;
&lt;br /&gt;
==Code Simplification Rules==&lt;br /&gt;
&lt;br /&gt;
All filters support code simplification rules. By default the [[Inline Codes Simplifier Step]], [[Simplification Filter]] and [[Post-segmentation Inline Codes Removal Step]] maximize the trimming and merging (aka simplification) of inline codes. In some cases this may not be desired. The simplification rules allow you to override the default behavior and prevent specific codes from being trimmed or merged.&lt;br /&gt;
&lt;br /&gt;
===General Syntax===&lt;br /&gt;
&lt;br /&gt;
The rules parser ignores irrelevant whitespace. Rules can be separated by spaces, newlines or nothing. This makes it easier to accommodate various container formats and their whitespace normalization rules. When a rule applies it means &amp;quot;do not simplify the match code&amp;quot;. Uppercase tokens are constants and predefined by the rule parser. Multiple rules are always OR'ed together.&lt;br /&gt;
&lt;br /&gt;
For more details see the JavaCC grammar: &amp;lt;code&amp;gt;../okapi-core/src/main/java/net/sf/okapi/core/simplifierrules/SimplifierRules.jj&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Rule Examples===&lt;br /&gt;
&lt;br /&gt;
If Code has any of these flags then don't simplify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DELETABLE or ADDABLE or CLONEABLE;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;=&amp;quot; is string match&lt;br /&gt;
Match basic TAGTYPE opening, closing or standalone &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA = &amp;quot;a&amp;quot; and TAGTYPE = OPENING;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;~&amp;quot; is regex match&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA ~ &amp;quot;a.*&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can negate any of the match operators &lt;br /&gt;
Don't simplify if the DATA does not match the regex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA !~ &amp;quot;a.*&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Match on type, linebreak in this case, don't simplify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if the Code is a linebreak if TYPE = &amp;quot;lb&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't simplify any rich text types&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;bold&amp;quot; or TYPE = &amp;quot;italic&amp;quot; or TYPE = &amp;quot;underline&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expressions can be recursive (supports embedded parens)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;bold&amp;quot; or (DATA = &amp;quot;bar&amp;quot; or (DATA = &amp;quot;foo&amp;quot; and TYPE = &amp;quot;underline&amp;quot;));&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===Filter Config Examples===&lt;br /&gt;
&lt;br /&gt;
Examples of using simplifier rules within the filter config formats used by Okapi.&lt;br /&gt;
&lt;br /&gt;
'''YAML:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
simplifierRules: |&lt;br /&gt;
  if ADDABLE or DELETABLE or CLONEABLE;&lt;br /&gt;
  if DATA = &amp;quot;&amp;lt;br/&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;font&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;/font&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
  if DATA ~ &amp;quot;\\&amp;lt;font.+&amp;quot; or DATA ~ &amp;quot;\\&amp;lt;img.+&amp;quot; or DATA ~ &amp;quot;\\&amp;lt;a.+&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ITS:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;its:rules xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot; version=&amp;quot;1.0&amp;quot; xmlns:itsx=&amp;quot;http://www.w3.org/2008/12/its-extensions&amp;quot; xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- See ITS specification at: http://www.w3.org/TR/its/ --&amp;gt;&lt;br /&gt;
 &amp;lt;its:translateRule selector=&amp;quot;//*&amp;quot; translate=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;its:withinTextRule selector=&amp;quot;//codeph&amp;quot; withinText=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;its:withinTextRule selector=&amp;quot;//ph&amp;quot; withinText=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;okp:simplifierRules&amp;gt;&lt;br /&gt;
 if ADDABLE or DELETABLE or CLONEABLE; if DATA ~ &amp;quot;.+&amp;quot;;&lt;br /&gt;
 &amp;lt;/okp:simplifierRules&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''FPRM (Parameters):'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#v1&lt;br /&gt;
extractNotes.b=true&lt;br /&gt;
simplifyCodes.b=true&lt;br /&gt;
simplifierRules=if ADDABLE or DELETABLE or CLONEABLE; if DATA ~ &amp;quot;.+&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Font Mapping==&lt;br /&gt;
&lt;br /&gt;
The font mapping can be considered as filter's ability to automatically substitute font information in the target document on the fly, according to a provided configuration - this helps to reduce the amount of reformatting and post-translation DTP. It is supported by IDML and OpenXML (DOCX documents) filters at the moment.&lt;br /&gt;
&lt;br /&gt;
The following font mapping configuration options are available:&lt;br /&gt;
* The source language regular expression pattern: &amp;lt;code&amp;gt;en.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;en-UK&amp;lt;/code&amp;gt;, etc. It can be left empty to apply the mapping to any source language.&lt;br /&gt;
* The target language regular expression pattern: &amp;lt;code&amp;gt;ru.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ru-RU&amp;lt;/code&amp;gt;, etc. It can be left empty to apply the mapping to any target language.&lt;br /&gt;
* The source font name regular expression pattern: &amp;lt;code&amp;gt;Arial.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;, etc. It can be left empty to apply the mapping to any source font name found.&lt;br /&gt;
* The target font name: &amp;lt;code&amp;gt;Arial&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;, etc. It should not be empty. And if it is made so, the mapping configuration is ignored.&lt;br /&gt;
&lt;br /&gt;
Also, the configured font mappings are applied in the order they are stated. And the final target font value is determined by a sequential&lt;br /&gt;
substitution of the source font values. I.e. if there is more than one mapping:&lt;br /&gt;
# &amp;lt;code&amp;gt;Arial&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Sans Serif&amp;lt;/code&amp;gt;&lt;br /&gt;
then the first mapping will produce &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt; replacement and the second one will be applied to this new value, thus, ending up with the &amp;lt;code&amp;gt;Sans Serif&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters serialisation format can look like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.sourceLocalePattern=en.*&lt;br /&gt;
fontMappings.0.targetLocalePattern=ru.*&lt;br /&gt;
fontMappings.0.sourceFontPattern=Times.*&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.1.sourceLocalePattern=ru&lt;br /&gt;
fontMappings.1.targetLocalePattern=fr&lt;br /&gt;
fontMappings.1.sourceFontPattern=The Sims Sans&lt;br /&gt;
fontMappings.1.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
	<entry>
		<id>http://okapiframework.org/wiki/index.php?title=Filters&amp;diff=839</id>
		<title>Filters</title>
		<link rel="alternate" type="text/html" href="http://okapiframework.org/wiki/index.php?title=Filters&amp;diff=839"/>
		<updated>2020-07-02T16:21:08Z</updated>

		<summary type="html">&lt;p&gt;Dkonovalyenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Filters are the components that convert input documents from their native file format into a common internal set of [[Glossary#Resource|resources]] that all Okapi components use. The extracted content can be re-written into the original file format. When using the steps, the extraction is done by the [[Raw Document to Filter Events Step]] and the re-writing by the [[Filter Events to Raw Document Step]].&lt;br /&gt;
&lt;br /&gt;
Note: The [[Okapi Filters Plugin for OmegaT]] allows you to use some of the filters directly from [http://www.omegat.org OmegaT].&lt;br /&gt;
&lt;br /&gt;
==List of the Filters==&lt;br /&gt;
&lt;br /&gt;
The framework distribution comes with the following filters:&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;8&amp;quot; width=100%&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* [[Archive Filter]]&lt;br /&gt;
* [[DTD Filter]]&lt;br /&gt;
* [[Doxygen Filter]]&lt;br /&gt;
* [[HTML Filter]]&lt;br /&gt;
* [[HTML5-ITS Filter]]&lt;br /&gt;
* [[ICML Filter]]&lt;br /&gt;
* [[IDML Filter]]&lt;br /&gt;
* [[JSON Filter]]&lt;br /&gt;
* [[Markdown Filter]]&lt;br /&gt;
* [[MIF Filter]]&lt;br /&gt;
* [[Moses Text Filter]]&lt;br /&gt;
* [[Multi-Parsers Filter]]&lt;br /&gt;
* [[OpenOffice Filter]]&lt;br /&gt;
* [[OpenXML Filter|OpenXML (MS Office) Filter]]&lt;br /&gt;
|&lt;br /&gt;
* [[PDF Filter]]&lt;br /&gt;
* [[Pensieve TM Filter]]&lt;br /&gt;
* [[PHP Content Filter]]&lt;br /&gt;
* [[Plain Text Filter]]&lt;br /&gt;
* [[PO Filter]]&lt;br /&gt;
* [[Properties Filter]]&lt;br /&gt;
* [[Rainbow Translation Kit Filter]]&lt;br /&gt;
* [[Regex Filter]]&lt;br /&gt;
* [[SDL Trados Package Filter]]&lt;br /&gt;
* [[Simplification Filter]]&lt;br /&gt;
* [[Table Filter]]&lt;br /&gt;
* [[TMX Filter]]&lt;br /&gt;
* [[Trados-Tagged RTF Filter]]&lt;br /&gt;
|&lt;br /&gt;
* [[Transifex Filter]]&lt;br /&gt;
* [[TS Filter]]&lt;br /&gt;
* [[TTX Filter]]&lt;br /&gt;
* [[TXML Filter]]&lt;br /&gt;
* [[Wiki Filter]]&lt;br /&gt;
* [[Vignette Filter]]&lt;br /&gt;
* [[XLIFF Filter]]&lt;br /&gt;
* [[XLIFF-2 Filter]]&lt;br /&gt;
* [[XML Filter]]&lt;br /&gt;
* [[XML Stream Filter]]&lt;br /&gt;
* [[YAML Filter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Supported File Formats==&lt;br /&gt;
&lt;br /&gt;
The following is a list of some of the file formats supported by the distribution through [[Understanding Filter Configurations|pre-defined configurations]]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Format''' || '''Extensions''' || '''Pre-Defined Configuration''' || '''Filter''' || '''Notes'''&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Android Strings || .xml || &amp;lt;code&amp;gt;okf_xml-AndroidStrings&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Apple Stringsdict || .stringsdict || &amp;lt;code&amp;gt;okf_xml-AppleStringsdict&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Archive || .zip || &amp;lt;code&amp;gt;okf_archive&amp;lt;/code&amp;gt; || [[Archive Filter]] || Meta filter that processes zip files with various formats as one file.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Auto Xliff || .xlf, .xliff || &amp;lt;code&amp;gt;okf_autoxliff&amp;lt;/code&amp;gt; || [[Auto Xliff Filter]] || Detects the version of an XLIFF file and then hands parsing off to the appropriate filter &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| CSV (Comma-separated values files) || .csv, .txt || &amp;lt;code&amp;gt;okf_table_csv&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| CSV (Multiple complex sub-formats) || .csv || &amp;lt;code&amp;gt;okf_multiparsers&amp;lt;/code&amp;gt; || [[Multi-Parsers Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DITA || .dita, .ditamap, .xml || &amp;lt;code&amp;gt;okf_xmlstream-dita&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DokuWiki pages || .txt || &amp;lt;code&amp;gt;okf_wiki&amp;lt;/code&amp;gt; || [[Wiki Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Doxygen-commented files || .c, .h, cpp || &amp;lt;code&amp;gt;okf_doxygen&amp;lt;/code&amp;gt; || [[Doxygen Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| DTD || .dtd || &amp;lt;code&amp;gt;okf_dtd&amp;lt;/code&amp;gt; || [[DTD Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Fixed-Width Columns Table || .txt || &amp;lt;code&amp;gt;okf_table_fwc&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Idiom WorldServer XLIFF || .xlf || &amp;lt;code&amp;gt;okf_xliff-iws&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| InCopy ICML || .wcml || &amp;lt;code&amp;gt;okf_icml&amp;lt;/code&amp;gt; || [[ICML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| InDesign IDML || .idml || &amp;lt;code&amp;gt;okf_idml&amp;lt;/code&amp;gt; || [[IDML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| iOS/Mac Strings|| .strings || &amp;lt;code&amp;gt;okf_regex-macStrings&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java Properties || .properties || &amp;lt;code&amp;gt;okf_properties&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java Properties (Output not escaped) || .properties || &amp;lt;code&amp;gt;okf_properties-outputNotEscaped&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java XML Properties || .xml || &amp;lt;code&amp;gt;okf_xml-JavaProperties&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Java XML Properties (HTML strings) || .xml || &amp;lt;code&amp;gt;okf_xmlstream-JavaPropertiesHTML&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| JSON || .json || &amp;lt;code&amp;gt;okf_json&amp;lt;/code&amp;gt; || [[JSON Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Haiku CatKeys || .catkeys || &amp;lt;code&amp;gt;okf_table_catkeys&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML (any) || .html, .htm || &amp;lt;code&amp;gt;okf_html&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML (Well-formed, and XHTML) || .html, .htm|| &amp;lt;code&amp;gt;okf_html-wellFormed&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| HTML5 (and XHTML5) || .html, .htm|| &amp;lt;code&amp;gt;okf_itshtml5&amp;lt;/code&amp;gt; || [[HTML5-ITS Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Markdown || .md || &amp;lt;code&amp;gt;okf_markdown&amp;lt;/code&amp;gt; || [[Markdown Filter]]&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Excel 2007/2010 || .xlsx, .xlsm, .xltx, .xltm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft PowerPoint 2007/2010 || .pptx, .pptm, .potx, .potm, .ppsx, .ppsm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Visio || .vsdx, .vsdm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Microsoft Word 2007/2010 || .docx, .docm, .dotx, .dotm || &amp;lt;code&amp;gt;okf_openxml&amp;lt;/code&amp;gt; || [[OpenXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| MIF || .mif || &amp;lt;code&amp;gt;okf_mif&amp;lt;/code&amp;gt; || [[MIF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Moses Text || .txt || &amp;lt;code&amp;gt;okf_mosestext&amp;lt;/code&amp;gt; || [[Moses Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Calc || .ods, .ots || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Draw || .odg, .otg || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Impress || .odp, .otp || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| OpenOffice.org Writer || .odt, .ott || &amp;lt;code&amp;gt;okf_odf&amp;lt;/code&amp;gt; || [[OpenOffice Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PDF || .pdf || &amp;lt;code&amp;gt;okf_pdf&amp;lt;/code&amp;gt; || [[PDF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[Pensieve TM]] || .pentm || &amp;lt;code&amp;gt;okf_pensieve&amp;lt;/code&amp;gt; || [[Pensieve TM Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PHP Content || .php || &amp;lt;code&amp;gt;okf_phpcontent&amp;lt;/code&amp;gt; || [[PHP Content Filter]] || Can be used as a subfilter only&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Plain Text (Line = text unit) || .txt || &amp;lt;code&amp;gt;okf_plaintext&amp;lt;/code&amp;gt; || [[ Plain Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Plain Text (Paragraph = text unit) || .txt || &amp;lt;code&amp;gt;okf_plaintext_paragraphs&amp;lt;/code&amp;gt; || [[Plain Text Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PO || .po || &amp;lt;code&amp;gt;okf_po&amp;lt;/code&amp;gt; || [[PO Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| PO (Monolingual style) || .po || &amp;lt;code&amp;gt;okf_po-monolingual&amp;lt;/code&amp;gt; || [[PO Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Rainbow Translation Kit manifests || .rkm || &amp;lt;code&amp;gt;okf_rainbowkit&amp;lt;/code&amp;gt; || [[Rainbow Translation Kit Filter]] || Used as a tkit reader only&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Regex (Any text-based format) || .txt || &amp;lt;code&amp;gt;okf_regex&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| RDF (Mozilla RDF) || .rdf || &amp;lt;code&amp;gt;okf_xml-MozillaRDF&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| RESX || .resx || &amp;lt;code&amp;gt;okf_xml-resx&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDLPPX || .sdlppx || &amp;lt;code&amp;gt;okf_sdlpackage&amp;lt;/code&amp;gt; || [[SDL Trados Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDLRPX || .sdlrpx || &amp;lt;code&amp;gt;okf_sdlpackage&amp;lt;/code&amp;gt; || [[SDL Trados Package Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SDL[[XLIFF]] || .sdlxlf || &amp;lt;code&amp;gt;okf_xliff-sdl&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Skype Language Files || .lang || &amp;lt;code&amp;gt;okf_properties-skypeLang&amp;lt;/code&amp;gt; || [[Properties Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| SRT (Sub-Rip Text, sub-titles files) || .srt || &amp;lt;code&amp;gt;okf_regex-srt&amp;lt;/code&amp;gt; || [[Regex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Tab-Delimiter files || .tsv, .txt || &amp;lt;code&amp;gt;okf_table_tsv&amp;lt;/code&amp;gt; || [[Table Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Tex files || .tex || &amp;lt;code&amp;gt;okf_tex&amp;lt;/code&amp;gt; || [[TEX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[TMX]] || .tmx || &amp;lt;code&amp;gt;okf_tmx&amp;lt;/code&amp;gt; || [[TMX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Transifex project || .txp || &amp;lt;code&amp;gt;okf_transifex&amp;lt;/code&amp;gt; || [[Transifex Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Trados-Tagged RTF || .rtf || &amp;lt;code&amp;gt;okf_tradosrtf&amp;lt;/code&amp;gt; || [[Trados-Tagged RTF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TS - Qt TS files || .ts || &amp;lt;code&amp;gt;okf_ts&amp;lt;/code&amp;gt; || [[TS Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TTX - Trados TagEditor TTX files || .ttx || &amp;lt;code&amp;gt;okf_ttx&amp;lt;/code&amp;gt; || [[TTX Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| TXML - Wordfast Pro TXML files || .txml || &amp;lt;code&amp;gt;okf_txml&amp;lt;/code&amp;gt; || [[TXML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Vignette Export/Import Content || .xml || &amp;lt;code&amp;gt;okf_vignette&amp;lt;/code&amp;gt; || [[Vignette Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XHTML || .html, .htm || &amp;lt;code&amp;gt;okf_html-wellFormed&amp;lt;/code&amp;gt; || [[HTML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| WIX (Windows Installer XML) localization files || .wix || &amp;lt;code&amp;gt;okf_xml-WixLocalization&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[XLIFF]] v1.2 || .xlf, .xliff || &amp;lt;code&amp;gt;okf_xliff&amp;lt;/code&amp;gt; || [[XLIFF Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[XLIFF]] v2 || .xlf || &amp;lt;code&amp;gt;okf_xliff2&amp;lt;/code&amp;gt; || [[XLIFF-2 Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XML (Generic, using [[ITS]] defaults) || .xml || &amp;lt;code&amp;gt;okf_xml&amp;lt;/code&amp;gt; || [[XML Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| XML (Generic, using stream reader) || .xml || &amp;lt;code&amp;gt;okf_xmlstream&amp;lt;/code&amp;gt; || [[XML Stream Filter]] ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| YAML (Generic YAML filter) || .yml, .yaml || &amp;lt;code&amp;gt;okf_yaml&amp;lt;/code&amp;gt; || [[YAML Filter]] ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that most filters allow you to [[Understanding Filter Configurations|create your own configurations]] to support more file formats.&lt;br /&gt;
&lt;br /&gt;
==Code Simplification Rules==&lt;br /&gt;
&lt;br /&gt;
All filters support code simplification rules. By default the [[Inline Codes Simplifier Step]], [[Simplification Filter]] and [[Post-segmentation Inline Codes Removal Step]] maximize the trimming and merging (aka simplification) of inline codes. In some cases this may not be desired. The simplification rules allow you to override the default behavior and prevent specific codes from being trimmed or merged.&lt;br /&gt;
&lt;br /&gt;
===General Syntax===&lt;br /&gt;
&lt;br /&gt;
The rules parser ignores irrelevant whitespace. Rules can be separated by spaces, newlines or nothing. This makes it easier to accommodate various container formats and their whitespace normalization rules. When a rule applies it means &amp;quot;do not simplify the match code&amp;quot;. Uppercase tokens are constants and predefined by the rule parser. Multiple rules are always OR'ed together.&lt;br /&gt;
&lt;br /&gt;
For more details see the JavaCC grammar: &amp;lt;code&amp;gt;../okapi-core/src/main/java/net/sf/okapi/core/simplifierrules/SimplifierRules.jj&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Rule Examples===&lt;br /&gt;
&lt;br /&gt;
If Code has any of these flags then don't simplify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DELETABLE or ADDABLE or CLONEABLE;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;=&amp;quot; is string match&lt;br /&gt;
Match basic TAGTYPE opening, closing or standalone &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA = &amp;quot;a&amp;quot; and TAGTYPE = OPENING;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;~&amp;quot; is regex match&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA ~ &amp;quot;a.*&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can negate any of the match operators &lt;br /&gt;
Don't simplify if the DATA does not match the regex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if DATA !~ &amp;quot;a.*&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Match on type, linebreak in this case, don't simplify &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if the Code is a linebreak if TYPE = &amp;quot;lb&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't simplify any rich text types&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;bold&amp;quot; or TYPE = &amp;quot;italic&amp;quot; or TYPE = &amp;quot;underline&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expressions can be recursive (supports embedded parens)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;if TYPE = &amp;quot;bold&amp;quot; or (DATA = &amp;quot;bar&amp;quot; or (DATA = &amp;quot;foo&amp;quot; and TYPE = &amp;quot;underline&amp;quot;));&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===Filter Config Examples===&lt;br /&gt;
&lt;br /&gt;
Examples of using simplifier rules within the filter config formats used by Okapi.&lt;br /&gt;
&lt;br /&gt;
'''YAML:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
simplifierRules: |&lt;br /&gt;
  if ADDABLE or DELETABLE or CLONEABLE;&lt;br /&gt;
  if DATA = &amp;quot;&amp;lt;br/&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;font&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;/font&amp;gt;&amp;quot; or DATA = &amp;quot;&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
  if DATA ~ &amp;quot;\\&amp;lt;font.+&amp;quot; or DATA ~ &amp;quot;\\&amp;lt;img.+&amp;quot; or DATA ~ &amp;quot;\\&amp;lt;a.+&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ITS:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;its:rules xmlns:its=&amp;quot;http://www.w3.org/2005/11/its&amp;quot; version=&amp;quot;1.0&amp;quot; xmlns:itsx=&amp;quot;http://www.w3.org/2008/12/its-extensions&amp;quot; xmlns:okp=&amp;quot;okapi-framework:xmlfilter-options&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- See ITS specification at: http://www.w3.org/TR/its/ --&amp;gt;&lt;br /&gt;
 &amp;lt;its:translateRule selector=&amp;quot;//*&amp;quot; translate=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;its:withinTextRule selector=&amp;quot;//codeph&amp;quot; withinText=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;its:withinTextRule selector=&amp;quot;//ph&amp;quot; withinText=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;okp:simplifierRules&amp;gt;&lt;br /&gt;
 if ADDABLE or DELETABLE or CLONEABLE; if DATA ~ &amp;quot;.+&amp;quot;;&lt;br /&gt;
 &amp;lt;/okp:simplifierRules&amp;gt;&lt;br /&gt;
&amp;lt;/its:rules&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''FPRM (Parameters):'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#v1&lt;br /&gt;
extractNotes.b=true&lt;br /&gt;
simplifyCodes.b=true&lt;br /&gt;
simplifierRules=if ADDABLE or DELETABLE or CLONEABLE; if DATA ~ &amp;quot;.+&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Font Mapping==&lt;br /&gt;
&lt;br /&gt;
The font mapping can be considered as filter's ability to automatically substitute font information in the target document on the fly, according to a provided configuration - this helps to reduce the amount of reformatting and post-translation DTP.&lt;br /&gt;
&lt;br /&gt;
The following font mapping configuration options are available:&lt;br /&gt;
* The source language regular expression pattern: &amp;lt;code&amp;gt;en.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;en-UK&amp;lt;/code&amp;gt;, etc. It can be left empty to apply the mapping to any source language.&lt;br /&gt;
* The target language regular expression pattern: &amp;lt;code&amp;gt;ru.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ru-RU&amp;lt;/code&amp;gt;, etc. It can be left empty to apply the mapping to any target language.&lt;br /&gt;
* The source font name regular expression pattern: &amp;lt;code&amp;gt;Arial.*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;, etc. It can be left empty to apply the mapping to any source font name found.&lt;br /&gt;
* The target font name: &amp;lt;code&amp;gt;Arial&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;, etc. It should not be empty. And if it is made so, the mapping configuration is ignored.&lt;br /&gt;
&lt;br /&gt;
Also, the configured font mappings are applied in the order they are stated. And the final target font value is determined by a sequential&lt;br /&gt;
substitution of the source font values. I.e. if there is more than one mapping:&lt;br /&gt;
# &amp;lt;code&amp;gt;Arial&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Sans Serif&amp;lt;/code&amp;gt;&lt;br /&gt;
then the first mapping will produce &amp;lt;code&amp;gt;Times New Roman&amp;lt;/code&amp;gt; replacement and the second one will be applied to this new value, thus, ending up with the &amp;lt;code&amp;gt;Sans Serif&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameters serialisation format can look like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fontMappings.0.sourceLocalePattern=en.*&lt;br /&gt;
fontMappings.0.targetLocalePattern=ru.*&lt;br /&gt;
fontMappings.0.sourceFontPattern=Times.*&lt;br /&gt;
fontMappings.0.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.1.sourceLocalePattern=ru&lt;br /&gt;
fontMappings.1.targetLocalePattern=fr&lt;br /&gt;
fontMappings.1.sourceFontPattern=The Sims Sans&lt;br /&gt;
fontMappings.1.targetFont=Arial Unicode MS&lt;br /&gt;
fontMappings.number.i=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Filters]]&lt;/div&gt;</summary>
		<author><name>Dkonovalyenko</name></author>
	</entry>
</feed>