summaryrefslogtreecommitdiffstats
path: root/org/madore/damlengine/TodoTranslations.java
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2010-10-09 21:50:58 +0200
committerDavid A. Madore <david+git@madore.org>2010-10-09 21:50:58 +0200
commitb39ca81f1300ad9e59839a9a52e9a6081dd4a517 (patch)
tree65b91e0adec2c7501cbe2fcdc6fbd64869d4a39b /org/madore/damlengine/TodoTranslations.java
parentcc6a3bae065f5f609c6ca46923f3b4ccaa8b063a (diff)
downloaddamlengine-b39ca81f1300ad9e59839a9a52e9a6081dd4a517.tar.gz
damlengine-b39ca81f1300ad9e59839a9a52e9a6081dd4a517.tar.bz2
damlengine-b39ca81f1300ad9e59839a9a52e9a6081dd4a517.zip
Handling of translations.
Diffstat (limited to 'org/madore/damlengine/TodoTranslations.java')
-rw-r--r--org/madore/damlengine/TodoTranslations.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/org/madore/damlengine/TodoTranslations.java b/org/madore/damlengine/TodoTranslations.java
new file mode 100644
index 0000000..894e7a3
--- /dev/null
+++ b/org/madore/damlengine/TodoTranslations.java
@@ -0,0 +1,57 @@
+package org.madore.damlengine;
+
+import java.util.ArrayList;
+import java.util.regex.Pattern;
+import org.w3c.dom.*;
+
+public final class TodoTranslations extends TodoElement {
+
+ public TodoTranslations(Element node,
+ Context ctx,
+ TodoItem caller) {
+ super(node, ctx, caller);
+ }
+
+ @Override
+ public void handle() {
+ ArrayList<TodoElement> toProcess = new ArrayList<TodoElement>(ctx.translations.size()+8);
+ for ( String trlang : ctx.translations ) {
+ Element p = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "p");
+ LangHelper.setLangNorec(p, trlang);
+ p.setAttributeNS(null, "class", "translation-offer");
+ node.getParentNode().insertBefore(p, node);
+ node.getParentNode().insertBefore(ctx.doc.createTextNode("\n"), node);
+ String str = "[";
+ if ( trlang.equals("en") )
+ str = "[An ";
+ else if ( trlang.equals("fr") )
+ str = "[Une ";
+ p.appendChild(ctx.doc.createTextNode(str));
+ Element a = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a");
+ p.appendChild(a);
+ a.setAttributeNS(null, "href", ctx.fileName+"."+trlang);
+ a.setAttributeNS(null, "hreflang", trlang);
+ str = trlang;
+ if ( trlang.equals("en") )
+ str = "English version";
+ else if ( trlang.equals("fr") )
+ str = "version française";
+ a.appendChild(ctx.doc.createTextNode(str));
+ str = "]";
+ if ( trlang.equals("en") )
+ str = " of this page is also available.]";
+ else if ( trlang.equals("fr") )
+ str = " de cette page est également disponible.]";
+ p.appendChild(ctx.doc.createTextNode(str));
+ toProcess.add(TodoElement.getTodoElement(p, this.ctx, this));
+ }
+ Node ws = node.getNextSibling();
+ if ( ( ws.getNodeType() == Node.TEXT_NODE
+ || ws.getNodeType() == Node.CDATA_SECTION_NODE )
+ && Pattern.matches("^\\s*$",((CharacterData)ws).getData()) )
+ node.getParentNode().removeChild(ws);
+ node.getParentNode().removeChild(node);
+ this.ownerDeque.registerAtStart(toProcess);
+ }
+
+}