Recréer la version 0.92 originale de 2020
This commit is contained in:
parent
729d6aaadf
commit
0d43e565e1
@ -5,11 +5,7 @@
|
||||
Filter to install as an export filter for LibreOffice Calc. -->
|
||||
<!-- Dominique Meeùs, modified 21-5-2020, version 0.92.
|
||||
Hardcoded languages of the columns are : nl-BE, fr-BE, de-DE, en-GB, es-ES. -->
|
||||
<!-- Philippe Tourigny, modified 12-9-2022, version 0.94
|
||||
Enable the filter to read the language code from the first column
|
||||
in each row. Also, add a SYSTEM DOCTYPE declaration to the output
|
||||
XML file.-->
|
||||
<!-- Copyright 2013, 2020 Dominique Meeùs, and 2022 Philippe Tourigny@.
|
||||
<!-- Copyright 2013, 2020 Dominique Meeùs.
|
||||
This program is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License
|
||||
as published by the Free Software Foundation,
|
||||
@ -26,68 +22,57 @@
|
||||
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
|
||||
exclude-result-prefixes="office table text">
|
||||
<!-- Namespaces needed to access parts of the document -->
|
||||
|
||||
<!-- Version 0.93: Add a SYSTEM DOCTYPE to output -->
|
||||
<xsl:output method = "xml" indent = "yes" encoding = "UTF-8"
|
||||
doctype-system="tmx14.dtd" omit-xml-declaration = "no"/>
|
||||
<xsl:output method = "xml" indent = "yes" encoding = "UTF-8" omit-xml-declaration = "no"/>
|
||||
|
||||
<xsl:template match="/">
|
||||
<tmx version="1.4">
|
||||
<!-- Define variables to make code easier to manage.
|
||||
Cells in the first row are language code headings.
|
||||
The first target language is selected as the
|
||||
administrative language for the output TMX.
|
||||
The first column identifies the source language. -->
|
||||
|
||||
<xsl:variable name="headingCell"
|
||||
select="//table:table/table:table-row[1]/table:table-cell"/>
|
||||
<xsl:variable name="adminlang"
|
||||
select="$headingCell[2]/text:p"/>
|
||||
<xsl:variable name="srclang"
|
||||
select="$headingCell[1]/text:p"/>
|
||||
|
||||
<!-- Define the TMX header
|
||||
The <xsl:attribute> element is used because variables
|
||||
are not recognized if entered directly in attributes. -->
|
||||
|
||||
<header>
|
||||
<xsl:attribute name="creationtool">TMX-export for LibreOffice</xsl:attribute>
|
||||
<xsl:attribute name="creationtoolversion">0.95</xsl:attribute>
|
||||
<xsl:attribute name="segtype">sentence</xsl:attribute>
|
||||
<xsl:attribute name="o-tmf">application/vnd.oasis.opendocument.spreadsheet</xsl:attribute>
|
||||
<xsl:attribute name="adminlang">
|
||||
<xsl:value-of select="$adminlang"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="srclang">
|
||||
<xsl:value-of select="$srclang"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="datatype">plaintext</xsl:attribute>
|
||||
<header
|
||||
creationtool="TMX-export for LibreOffice"
|
||||
creationtoolversion="0.9"
|
||||
segtype="sentence"
|
||||
o-tmf="application/vnd.oasis.opendocument.spreadsheet"
|
||||
adminlang="fr-BE"
|
||||
srclang="nl-BE"
|
||||
datatype="plaintext">
|
||||
</header>
|
||||
|
||||
<!-- Define the TMX body. -->
|
||||
<!-- Todo : get the language from Calc, if any, or from a dialog, if LibreOffice allows,
|
||||
or from the first row
|
||||
to set the srclang of the header and the xml:lang of the tuv. -->
|
||||
<body>
|
||||
<xsl:for-each select="//table:table-row[position()>1]">
|
||||
<xsl:for-each select="//table:table-row">
|
||||
<tu>
|
||||
<xsl:for-each select="table:table-cell">
|
||||
<xsl:variable name="currentLang"
|
||||
select="//table:table/table:table-row[1]/table:table-cell"/>
|
||||
<xsl:variable name="currentColumn"
|
||||
select="position()"/>
|
||||
<xsl:if test="normalize-space(text:p) != ''">
|
||||
<tuv>
|
||||
<xsl:attribute name="xml:lang">
|
||||
<xsl:value-of select="$currentLang[$currentColumn]/text:p"/>
|
||||
</xsl:attribute>
|
||||
<seg>
|
||||
<xsl:value-of select="text:p"/>
|
||||
</seg>
|
||||
<xsl:choose>
|
||||
<xsl:when test="position()=1">
|
||||
<tuv xml:lang="nl-BE">
|
||||
<seg><xsl:value-of select="text:p"/></seg>
|
||||
</tuv>
|
||||
</xsl:if>
|
||||
</xsl:when>
|
||||
<xsl:when test="position()=2">
|
||||
<tuv xml:lang="fr-BE">
|
||||
<seg><xsl:value-of select="text:p"/></seg>
|
||||
</tuv>
|
||||
</xsl:when>
|
||||
<xsl:when test="position()=3">
|
||||
<tuv xml:lang="de-DE">
|
||||
<seg><xsl:value-of select="text:p"/></seg>
|
||||
</tuv>
|
||||
</xsl:when>
|
||||
<xsl:when test="position()=4">
|
||||
<tuv xml:lang="en-GB">
|
||||
<seg><xsl:value-of select="text:p"/></seg>
|
||||
</tuv>
|
||||
</xsl:when>
|
||||
<xsl:when test="position()=5">
|
||||
<tuv xml:lang="es-ES">
|
||||
<seg><xsl:value-of select="text:p"/></seg>
|
||||
</tuv>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:for-each>
|
||||
</tu>
|
||||
</xsl:for-each>
|
||||
</body>
|
||||
</tmx>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -4,10 +4,7 @@
|
||||
XSLT transformation of a TMX translation memory exchange file
|
||||
into an Open Document Format spreadsheet in two columns.
|
||||
Filter to install as an import filter for LibreOffice Calc. -->
|
||||
<!-- Philippe Tourigny, modified 12-9-2022, version 0.99
|
||||
Allow the filter to retrieve the languages in the TMX from its
|
||||
first <tu> element, and create a column for each language. -->
|
||||
<!-- Copyright 2013 Dominique Meeùs, and 2022 Philippe Tourigny.
|
||||
<!-- Copyright 2013 Dominique Meeùs.
|
||||
This program is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License
|
||||
as published by the Free Software Foundation,
|
||||
@ -45,76 +42,47 @@
|
||||
office:version="1.0">
|
||||
|
||||
<office:automatic-styles>
|
||||
<!-- PTable properties -->
|
||||
<!-- Properties of the table -->
|
||||
<style:style style:name="ta1" style:family="table" style:master-page-name="Default">
|
||||
<style:table-properties table:display="true" style:writing-mode="lr-tb"/>
|
||||
</style:style>
|
||||
|
||||
<!-- Column properties (for all languages) -->
|
||||
<style:style style:name="co1" style:family="table-column">
|
||||
<style:table-column-properties fo:break-before="auto" style:column-width="14.000cm"/>
|
||||
<!-- Properties of the columns -->
|
||||
<!-- I consider the case of a two-languages TMX -->
|
||||
<!-- Todo : pass the source and target languages as attributes to the text in Calc -->
|
||||
<style:style style:name="co1" style:family="table-column"><!-- source language -->
|
||||
<style:table-column-properties fo:break-before="auto" style:column-width="16.000cm"/>
|
||||
</style:style>
|
||||
<style:style style:name="co2" style:family="table-column"><!-- target language -->
|
||||
<style:table-column-properties fo:break-before="auto" style:column-width="16.000cm"/>
|
||||
</style:style>
|
||||
|
||||
<!-- Row properties -->
|
||||
<!-- All rows are set to “optimal height” -->
|
||||
<!-- Properties of the rows -->
|
||||
<!-- The rows are “optimal height” but do not expand for the “wrap option” of the cells -->
|
||||
<style:style style:name="ro1" style:family="table-row">
|
||||
<style:table-row-properties fo:break-before="auto" style:use-optimal-row-height="true"/>
|
||||
</style:style>
|
||||
|
||||
<!-- Cell properties -->
|
||||
<!-- Language code heading cells
|
||||
The language codes are centered and set in bold
|
||||
in the first column. -->
|
||||
<style:style style:name="heading" style:family="table-cell"
|
||||
style:parent-style-name="Default">
|
||||
<style:table-cell-properties style:text-align-source="fix"
|
||||
style:repeat-content="false" fo:wrap-option="wrap"/>
|
||||
<style:paragraph-properties fo:text-align="center"/>
|
||||
<style:text-properties fo:font-weight="bold"/>
|
||||
<!-- Properties of the cells -->
|
||||
<style:style style:name="ce1" style:family="table-cell" style:parent-style-name="Default">
|
||||
<style:table-cell-properties fo:wrap-option="wrap"/>
|
||||
</style:style>
|
||||
|
||||
<!-- Style for cells with the segment text -->
|
||||
<style:style style:name="ce2" style:family="table-cell" style:parent-style-name="Default">
|
||||
<style:table-cell-properties fo:wrap-option="wrap"/>
|
||||
</style:style>
|
||||
</office:automatic-styles>
|
||||
|
||||
<!-- Define variables used to identify the languages
|
||||
In a TMX with three or more languages. All translation unit
|
||||
(<tuv>) elements are assumed to contain the same number of
|
||||
languages, and the first <tu> is used to identify them. -->
|
||||
|
||||
<!-- Todo: Identify the <tu> with the largest highest number of <tuv> elements to identify all languages in a TMX file with more languages in some <tu> elements than others. -->
|
||||
<xsl:variable name="firstTU" select="tmx/body/tu[1]"/>
|
||||
<xsl:variable name="numLangs" select="count($firstTU/tuv)"/>
|
||||
|
||||
<office:body>
|
||||
<office:spreadsheet>
|
||||
<table:table table:style-name="ta1">
|
||||
<!-- Set the format for a number of columns equal to
|
||||
the number of languages in the imported TMX file -->
|
||||
<table:table-column table:style-name="co1" table:number-columns-repeated="{$numLangs}"
|
||||
table:default-cell-style-name="ce2"/>
|
||||
<table:table>
|
||||
<!-- Format of the columns -->
|
||||
<!-- How about a free number of columns ? -->
|
||||
<table:table-column table:style-name="co1" table:default-cell-style-name="ce1"/>
|
||||
<table:table-column table:style-name="co2" table:default-cell-style-name="ce2"/>
|
||||
|
||||
<!-- Fill in the language headers in the first row
|
||||
The use of the "local-name()" function enables
|
||||
the filter to handle older versions that use the
|
||||
"lang" attribute as well as recent versions that
|
||||
use the "xml:lang"` attributes -->
|
||||
<table:table-row table:style-name="ro1">
|
||||
<xsl:for-each select="$firstTU/tuv">
|
||||
<table:table-cell table:style-name="heading">
|
||||
<text:p>
|
||||
<xsl:value-of select="@*[local-name()='lang']"/>
|
||||
</text:p>
|
||||
</table:table-cell>
|
||||
</xsl:for-each>
|
||||
</table:table-row>
|
||||
|
||||
<!-- Process the <tu> and <tuv> elements in the TMX file:
|
||||
One row per tu, one column per segment in each <tuv>. -->
|
||||
<!-- Process XML of the input TMX file: one row for each tu, one cell for the segment in each tuv -->
|
||||
<xsl:for-each select="tmx/body/tu">
|
||||
<table:table-row table:style-name="ro1">
|
||||
<table:table-row>
|
||||
<xsl:for-each select="tuv">
|
||||
<table:table-cell>
|
||||
<text:p><xsl:value-of select="seg"/></text:p>
|
||||
|
58
filtres_TMX_pour_Calc/TMX-readme.txt
Normal file
58
filtres_TMX_pour_Calc/TMX-readme.txt
Normal file
@ -0,0 +1,58 @@
|
||||
Dominique Meeùs (dominique@d-meeus.be, https://d-meeus.be),
|
||||
created 30-9-2013, version 0.9.
|
||||
(If my surname is not shown correctly, mind the fact that this file is encoded in UTF-8.)
|
||||
(One would have written Meeùs in old HTML entities for older charachters encodings.)
|
||||
Copyright 2013 Dominique Meeùs, see below.
|
||||
|
||||
Modified 28-11-2019 (this readme file) as 0.91 for the position of the command
|
||||
to install in new versions of LibreOffice.
|
||||
|
||||
Modified 21-5-2020 (the XML export filter) as 0.92 to allow five columns nl-BE, fr-BE, de-DE, en-GB, es-ES.
|
||||
(Originally two columns only.)
|
||||
|
||||
This TMX-filters software provides two XSLT filters
|
||||
to import or export TMX translation memories
|
||||
to and from LibreOffice (or OpenOffice.org) Calc.
|
||||
|
||||
Installation
|
||||
============
|
||||
The package TMX-filters-vx_y.jar has to be installed in LibreOffice
|
||||
by the standard dialog from the menu Tools,
|
||||
command Macros > XML Filter Settings…
|
||||
[command directly XML Filter Settings… in older versions]
|
||||
Click the button Open Package… and browse to the package.
|
||||
|
||||
Limitation
|
||||
==========
|
||||
Source language nl-BE (Dutch) and targets fr-BE (French), de-DE, en-GB, es-ES
|
||||
are hardcoded in the export filter.
|
||||
The segments in two or more of the above languages have to be put
|
||||
in the corresponding columns A (nl), B (fr), C (de), D (en), E (es) of Calc.
|
||||
Some columns may stay empty.
|
||||
The source language is marked srclang="nl-BE" near the end of line 3.
|
||||
It suffices to change this attribute value to change the source language.
|
||||
The order A (nl), B (fr), C (de), D (en), E (es) in compulsory in Calc
|
||||
to have the segments correctly marked for their language.
|
||||
Each segment being so marked, the order has no effect on the translation memory. Only srclang matters
|
||||
For other languages you have to search and replace these attribute values in the TMX
|
||||
or edit the export filter.
|
||||
Feel free to e-mail me if you think of a way to improve this.
|
||||
|
||||
Use
|
||||
===
|
||||
— To read a TMX in LibreOffice Calc: File, Open…
|
||||
— To produce a TMX sentences aligned in two columns in LibreOffice Calc,
|
||||
File, Save as… (not Export…) and choose type TMX (likely all the way down a long list).
|
||||
|
||||
License
|
||||
=======
|
||||
Copyright 2013, 2020 Dominique Meeùs.
|
||||
This program is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License
|
||||
as published by the Free Software Foundation,
|
||||
either version 3 of the License, or (at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the GNU Lesser General Public License for more details.
|
||||
You should have received a copy of the GNU Lesser General Public License along with this program.
|
||||
If not, see http://www.gnu.org/licenses/.
|
Loading…
Reference in New Issue
Block a user