]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9805: Created script to compare XML traslation files with phrase_en.xml
authorSergey Safarov <s.safarov@gmail.com>
Fri, 2 Dec 2016 21:14:39 +0000 (16:14 -0500)
committerSergey Safarov <s.safarov@gmail.com>
Sat, 3 Dec 2016 06:39:17 +0000 (01:39 -0500)
docs/phrase/README.TXT
docs/phrase/make_checks.sh [new file with mode: 0755]
docs/phrase/make_checks.xslt [new file with mode: 0644]

index 8cd7975064a0a896765db9a2c6cbb36cea0d26b8..463718289f24e9393785c99bcabd2e8f76a963ff 100644 (file)
@@ -7,6 +7,11 @@ to automatically generate or verify all the files exist for a particular
 language.  If you are capable of recording each language please do so and
 contribute them to the project.  As phrases are added, the files will need to be
 updated for the respective phrase_xx.xml file.
+make_checks.sh - script to compare phrase_en.xml with other language xml files.
+Script output contans prompt elements with attributes:
+translated - value 'false' or not displayed;
+transpated-to - tranlation value if exists;
+more-then-one-translation - displayed if exist two or more for given wav file.
 
 How can you contribute?
 
diff --git a/docs/phrase/make_checks.sh b/docs/phrase/make_checks.sh
new file mode 100755 (executable)
index 0000000..72e6105
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+SAXON_JAR=/usr/share/java/saxon9he.jar
+XML=$1
+
+if  [ ! -f "$SAXON_JAR" ]; then
+       echo "Please update 'SAXON_JAR' varaiable value to location of SAXON jar"
+       exit -1
+fi
+
+if [ -z "$XML" ]; then
+       echo "Error: Please enter xml file name that must be ckecked."
+       echo "Exmple: make_checks.sh phrase_es_ES.xml > comparison_result.xml"
+       exit -1
+fi
+
+java -jar "$SAXON_JAR" -xsl:make_checks.xslt -t "$XML"
+
diff --git a/docs/phrase/make_checks.xslt b/docs/phrase/make_checks.xslt
new file mode 100644 (file)
index 0000000..af71cb7
--- /dev/null
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
+
+    <xsl:template match="/">
+        <xsl:variable name="master_xml">
+            <xsl:copy-of select="document('phrase_en.xml')/*"/>
+        </xsl:variable>
+        <xsl:variable name="current_xml">
+            <xsl:copy-of select="*"/>
+        </xsl:variable>
+        <xsl:apply-templates select="$master_xml" mode="checkElements">
+            <xsl:with-param name="current_xml" select="$current_xml/*"/>
+        </xsl:apply-templates>
+    </xsl:template>
+
+    <xsl:template match="en" mode="checkElements">
+        <xsl:param name="current_xml"/>
+        <xsl:copy>
+            <xsl:attribute name="translated-to" select="name($current_xml)"/>
+            <xsl:apply-templates select="@*|node()" mode="#current">
+                <xsl:with-param name="current_xml" select="$current_xml/*"/>
+            </xsl:apply-templates>
+        </xsl:copy>
+    </xsl:template>
+
+    <xsl:template match="prompt" mode="checkElements">
+        <xsl:param name="current_xml"/>
+        <xsl:variable name="translation"
+            select="$current_xml[@filename=current()/@filename]/@phrase"/>
+        <xsl:copy>
+            <xsl:apply-templates select="@*" mode="#current"/>
+            <xsl:choose>
+                <xsl:when test="count($translation)=0">
+                    <xsl:attribute name="translated" select="false()"/>
+                </xsl:when>
+                <xsl:when test="@phrase = $translation">
+                    <xsl:attribute name="translated" select="false()"/>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:attribute name="translated-to" select="$translation[1]"/>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:if test="count($translation) > 1">
+                <xsl:attribute name="more-then-one-translation" select="true()"/>
+            </xsl:if>
+        </xsl:copy>
+    </xsl:template>
+
+    <xsl:template match="@*|node()" mode="checkElements">
+        <xsl:param name="current_xml"/>
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()" mode="#current">
+                <xsl:with-param name="current_xml" select="$current_xml/*"/>
+            </xsl:apply-templates>
+        </xsl:copy>
+    </xsl:template>
+
+</xsl:stylesheet>
+