cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cross...@apache.org
Subject svn commit: r345438 [168/286] - in /cocoon/site/site/2.1: ./ developing/ developing/portal/ developing/portal/coplets/ developing/webapps/ developing/webapps/authentication/ faq/ howto/ installing/ plan/ plan/documentation/ plan/otherplanning/ plan/ove...
Date Fri, 18 Nov 2005 04:13:22 GMT
Added: cocoon/site/site/2.1/userdocs/i18nTransformer.html
URL: http://svn.apache.org/viewcvs/cocoon/site/site/2.1/userdocs/i18nTransformer.html?rev=345438&view=auto
==============================================================================
--- cocoon/site/site/2.1/userdocs/i18nTransformer.html (added)
+++ cocoon/site/site/2.1/userdocs/i18nTransformer.html Thu Nov 17 20:00:02 2005
@@ -0,0 +1,1850 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.8-dev">
+<meta name="Forrest-skin-name" content="pelt">
+<title>I18n Transformer</title>
+<link type="text/css" href="../../skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet">
+<link type="text/css" href="../../skin/profile.css" rel="stylesheet">
+<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="../../images/cocoon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">apache</a> &gt; <a href="http://cocoon.apache.org/">cocoon</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+    |header
+    +-->
+<div class="header">
+<!--+
+    |start group logo
+    +-->
+<div class="grouplogo">
+<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="../../images/cocoon-project-logo.png" title="The Apache Software Foundation"></a>
+</div>
+<!--+
+    |end group logo
+    +-->
+<!--+
+    |start Project Logo
+    +-->
+<div class="projectlogo">
+<a href="http://cocoon.apache.org/"><img class="logoImage" alt="Apache Cocoon" src="../../images/cocoon-logo.gif" title="Apache Cocoon"></a>
+</div>
+<!--+
+    |end Project Logo
+    +-->
+<!--+
+    |start Search
+    +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="cocoon.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+    |end search
+    +-->
+<!--+
+    |start Tabs
+    +-->
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../2.1/index.html">Home</a>
+</li>
+</ul>
+<!--+
+    |end Tabs
+    +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+    |start Subtabs
+    +-->
+<div id="level2tabs"></div>
+<!--+
+    |end Endtabs
+    +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+             
+             &nbsp;
+           </div>
+<!--+
+    |start Menu, mainarea
+    +-->
+<!--+
+    |start Menu
+    +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_1.1', '../../skin/')" id="menu_1.1Title" class="menutitle">About</div>
+<div id="menu_1.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/features.html">Features</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/news.html">News</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/license.html">License</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/mirror.cgi">Download</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.2', '../../skin/')" id="menu_selected_1.2Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Documentation</div>
+<div id="menu_selected_1.2" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../2.1/introduction.html">Introduction</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.2', '../../skin/')" id="menu_1.2.2Title" class="menutitle">Tracks</div>
+<div id="menu_1.2.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/tracks/index.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/tracks/first-steps-track.html">First steps</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/tracks/web-publishing-track.html">Web publishing</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.3', '../../skin/')" id="menu_1.2.3Title" class="menutitle">Installation</div>
+<div id="menu_1.2.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://cocoon.apache.org/mirror.cgi">Download</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/installing/index.html">Intro</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/installing/requirements.html">System requirements</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/installing/updating-older.html">Updating to version 2.1.5</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/installing/jars.html">Jars</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/installing/tests.html">Overview</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../2.1/overview.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.2.5', '../../skin/')" id="menu_selected_1.2.5Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">User Guide</div>
+<div id="menu_selected_1.2.5" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../2.1/userdocs/index.html">User Documentation</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.2', '../../skin/')" id="menu_1.2.5.2Title" class="menutitle">Concepts</div>
+<div id="menu_1.2.5.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/index.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.2.2', '../../skin/')" id="menu_1.2.5.2.2Title" class="menutitle">Sitemap</div>
+<div id="menu_1.2.5.2.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/sitemap.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/sitemap/sitemap-examples.html">Example sitemap snippets</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/views.html">Views</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/caching.html">Caching</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/actions.html">Actions</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/matchers_selectors.html">Matchers and Selectors</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/catalog.html">Entity Catalogs</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/mrustore.html">MRUMemoryStore</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/persistence.html">Persistence</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/storejanitor.html">StoreJanitor</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/xmlsearching.html">XML Searching</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/validation.html">XML Validation</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/databases.html">Databases</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/modules.html">Modules</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/modules-ref.html">Modules Reference</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/redirection.html">Redirection</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/profiler.html">Profiler</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/concepts/errorhandling.html">Error Handling</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.2.5.3', '../../skin/')" id="menu_selected_1.2.5.3Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Sitemap Components</div>
+<div id="menu_selected_1.2.5.3" class="selectedmenuitemgroup" style="display: block;">
+<div onclick="SwitchMenu('menu_1.2.5.3.1', '../../skin/')" id="menu_1.2.5.3.1Title" class="menutitle">Generators</div>
+<div id="menu_1.2.5.3.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/generators.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.1.2', '../../skin/')" id="menu_1.2.5.3.1.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.1.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/default/file-generator.html">File Generator</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.1.3', '../../skin/')" id="menu_1.2.5.3.1.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/calendar-generator.html">Calendar Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/directory-generator.html">Directory Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/file-generator.html">File Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/imagedirectory-generator.html">Imagedirectory Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/jx-generator.html">Jx Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/linkstatus-generator.html">Linkstatus Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/mp3directory-generator.html">MP3directory Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/error-generator.html">Notifying Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/request-generator.html">Request Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/sessionattribute-generator.html">SessionAttribute Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/status-generator.html">Status Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/stream-generator.html">Stream Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xpathdirectory-generator.html">Xpathdirectory Generator</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.1.4', '../../skin/')" id="menu_1.2.5.3.1.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/extractor-generator.html">Fragment Extractor Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/html-generator.html">HTML Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/jsp-generator.html">JSP Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/php-generator.html">PHP Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/profile-generator.html">Profile Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/script-generator.html">Script Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/search-generator.html">Search Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/serverpages-generator.html">Server Pages Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/velocity-generator.html">Velocity Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/wsproxy-generator.html">Web Service Proxy Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xmldbcollection-generator.html">XML:DB Collection Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xmldb-generator.html">XML:DB Generator</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.2.5.3.2', '../../skin/')" id="menu_selected_1.2.5.3.2Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Transformers</div>
+<div id="menu_selected_1.2.5.3.2" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../2.1/userdocs/transformers.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.2.2', '../../skin/')" id="menu_1.2.5.3.2.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.2.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/default/xslt-transformer.html">XSLT Transformer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.2.5.3.2.3', '../../skin/')" id="menu_selected_1.2.5.3.2.3Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Core</div>
+<div id="menu_selected_1.2.5.3.2.3" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../2.1/userdocs/extractor-transformer.html">Fragment Extractor Transformer</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">I18n Transformer</div>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/jpath-transformer.html">JPath Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/log-transformer.html">Log Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/filter-transformer.html">Filter Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/readdomsession-transformer.html">Read DOM Session Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/rolefilter-transformer.html">RoleFilter Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/simpleform-transformer.html">SimpleForm Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/simpleforminstance-transformer.html">SimpleFormInstance Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/writedomsession-transformer.html">Write DOM Session Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xinclude-transformer.html">Xinclude Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/cinclude-transformer.html">Cinclude Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/encodeurl-transformer.html">EncodeUrl Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/sourcewriting-transformer.html">Sourcewriting Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/augment-transformer.html">Augment Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/jx-template-transformer.html">JX Template Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xslt-transformer.html">XSLT Transformer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.2.4', '../../skin/')" id="menu_1.2.5.3.2.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.2.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/ldap-transformer.html">LDAP Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/lexer-transformer.html">Lexical Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/parser-transformer.html">Parser Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/pattern-transformer.html">Pattern Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/session.html">Session Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/sql-transformer.html">SQL Transformer</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.3', '../../skin/')" id="menu_1.2.5.3.3Title" class="menutitle">Serializers</div>
+<div id="menu_1.2.5.3.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/serializers.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.3.2', '../../skin/')" id="menu_1.2.5.3.3.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.3.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/default/html-serializer.html">HTML Serializer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.3.3', '../../skin/')" id="menu_1.2.5.3.3.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.3.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/html-serializer.html">HTML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xhtml-serializer.html">XHTML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xml-serializer.html">XML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/text-serializer.html">Text Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/wap-serializer.html">WAP/WML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/svg-serializer.html">SVG Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/svgxml-serializer.html">SVG/XML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/svgjpeg-serializer.html">SVG/JPEG Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/svgpng-serializer.html">SVG/PNG Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/svgtiff-serializer.html">SVG/TIFF Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/vrml-serializer.html">VRML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/link-serializer.html">Link Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/ziparchive-serializer.html">Zip archive Serializer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.3.4', '../../skin/')" id="menu_1.2.5.3.3.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.3.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/pdf-serializer.html">PDF Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/ps-serializer.html">PS Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/pcl-serializer.html">PCL Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xls-serializer.html">HSSF (XLS) Serializer</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.4', '../../skin/')" id="menu_1.2.5.3.4Title" class="menutitle">Matchers</div>
+<div id="menu_1.2.5.3.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/matchers.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.4.2', '../../skin/')" id="menu_1.2.5.3.4.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.4.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/default/wildcarduri-matcher.html">WildCard URI Matcher</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.4.3', '../../skin/')" id="menu_1.2.5.3.4.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.4.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/core/wildcarduri-matcher.html">WildCard URI Matcher</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/core/wildcardheader-matcher.html">WildCard Header Matcher</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.4.4', '../../skin/')" id="menu_1.2.5.3.4.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.4.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/optional/template-matcher.html">Template Matcher</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.5', '../../skin/')" id="menu_1.2.5.3.5Title" class="menutitle">Selectors</div>
+<div id="menu_1.2.5.3.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/selectors.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.5.2', '../../skin/')" id="menu_1.2.5.3.5.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.5.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/default/browser-selector.html">Browser Selector</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.5.3', '../../skin/')" id="menu_1.2.5.3.5.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.5.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/browser-selector.html">Browser Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/host-selector.html">Host Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/parameter-selector.html">Parameter Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/requestattribute-selector.html">Request Attribute Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/requestmethod-selector.html">Request Method Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/requestparameter-selector.html">Request Parameter Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/resourceexists-selector.html">Resource Exists Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/regular-expression-header-selector.html">Regular-expression Header Selector</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.5.4', '../../skin/')" id="menu_1.2.5.3.5.4Title" class="menutitle">Scratchpad</div>
+<div id="menu_1.2.5.3.5.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/scratchpad/date-selector.html">Date Selector</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.6', '../../skin/')" id="menu_1.2.5.3.6Title" class="menutitle">Actions</div>
+<div id="menu_1.2.5.3.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/actions.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/database-actions.html">Database</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.6.3', '../../skin/')" id="menu_1.2.5.3.6.3Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.6.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/optional/sendmail-action.html">Sendmail Action</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/optional/session-action.html">Session Action</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/optional/script-action.html">Script Action</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7', '../../skin/')" id="menu_1.2.5.3.7Title" class="menutitle">Readers</div>
+<div id="menu_1.2.5.3.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/readers.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7.2', '../../skin/')" id="menu_1.2.5.3.7.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.7.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/default/resource-reader.html">Resource Reader</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7.3', '../../skin/')" id="menu_1.2.5.3.7.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.7.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/core/image-reader.html">Image Reader</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/core/resource-reader.html">Resource Reader</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7.4', '../../skin/')" id="menu_1.2.5.3.7.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.7.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/optional/axisrpc-reader.html">AxisRPC Reader</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/optional/database-reader.html">Database Reader</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/optional/jsp-reader.html">JSP Reader</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7.5', '../../skin/')" id="menu_1.2.5.3.7.5Title" class="menutitle">Scratchpad</div>
+<div id="menu_1.2.5.3.7.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/scratchpad/directoryziparchiver-reader.html">Directory ZIP Archiver</a>
+</div>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.4', '../../skin/')" id="menu_1.2.5.4Title" class="menutitle">Flow</div>
+<div id="menu_1.2.5.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/flow/index.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/flow/continuations.html">Continuations</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/flow/how-does-it-work.html">How does it work?</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/flow/using.html">Usage</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/flow/tutor.html">Tutorial</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/flow/sitemap.html">Sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/flow/api.html">Flowscript</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/flow/java.html">Calling Java</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/flow/views.html">Views</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/flow/jxtemplate.html">JXTemplate</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/flow/jpath.html">JPath</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/flow/velocity.html">Velocity</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5', '../../skin/')" id="menu_1.2.5.5Title" class="menutitle">Cocoon Forms</div>
+<div id="menu_1.2.5.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.2.5.5.1', '../../skin/')" id="menu_1.2.5.5.1Title" class="menutitle">Basics</div>
+<div id="menu_1.2.5.5.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/basics/index.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/basics/sample.html">Sample</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/basics/improving_sample.html">Improving the sample</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5.2', '../../skin/')" id="menu_1.2.5.5.2Title" class="menutitle">Widgets</div>
+<div id="menu_1.2.5.5.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_form.html">form</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_field.html">field</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_multivaluefield.html">multivaluefield</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_booleanfield.html">booleanfield</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_repeater.html">repeater</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_output.html">output</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_submit.html">submit</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_action.html">action</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_repeater_action.html">repeater-action</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_row_action.html">row-action</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_aggregatefield.html">aggregatefield</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_upload.html">upload</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_messages.html">messages</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_imagemap.html">imagemap</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_tree.html">tree</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_group.html">group/struct</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_union.html">union</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgets/widget_class.html">class/new</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5.3', '../../skin/')" id="menu_1.2.5.5.3Title" class="menutitle">Widget Concepts</div>
+<div id="menu_1.2.5.5.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgetconcepts/validation.html">Validation</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgetconcepts/eventhandling.html">Event Handling</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgetconcepts/datatypes.html">Datatypes</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgetconcepts/selectionlists.html">Selection lists</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/widgetconcepts/widgetstates.html">Widget states</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5.4', '../../skin/')" id="menu_1.2.5.5.4Title" class="menutitle">Form Publishing</div>
+<div id="menu_1.2.5.5.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.2.5.5.4.1', '../../skin/')" id="menu_1.2.5.5.4.1Title" class="menutitle">Templating</div>
+<div id="menu_1.2.5.5.4.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/publishing/templating.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/publishing/templating/templategenerator.html">Template Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/publishing/templating/templatetransformer.html">Template Transformer</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/publishing/formsgenerator.html">Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/publishing/xslt.html">XSLT</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/binding.html">Binding Framework</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xmlbinding.html">Simple XML Binding</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5.7', '../../skin/')" id="menu_1.2.5.5.7Title" class="menutitle">API</div>
+<div id="menu_1.2.5.5.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/api/api_javascript.html">Javascript (Flowscript)</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/api/api_java.html">Java</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/formlibraries.html">Form libraries</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/ajax.html">Ajax</a>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/cocoon/Forms">Forms @ Wiki</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.6', '../../skin/')" id="menu_1.2.5.6Title" class="menutitle">XSP</div>
+<div id="menu_1.2.5.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/index.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.6.2', '../../skin/')" id="menu_1.2.5.6.2Title" class="menutitle">XSP</div>
+<div id="menu_1.2.5.6.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/xsp.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xsp/logicsheet.html">XSP Guide</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xsp/xsp-internals.html">XSP Internals</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xsp/logicsheet-concepts.html">XSP Logicsheets</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/xsp/sessions.html">Sessions</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.6.3', '../../skin/')" id="menu_1.2.5.6.3Title" class="menutitle">Logicsheets</div>
+<div id="menu_1.2.5.6.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/logicsheets/request.html">Request</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/logicsheets/session.html">Session</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/logicsheets/esql.html">ESQL</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/logicsheets/logicsheet-forms.html">Forms</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/logicsheets/sendmail.html">Sendmail</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.7', '../../skin/')" id="menu_1.2.5.7Title" class="menutitle">Offline</div>
+<div id="menu_1.2.5.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/userdocs/offline/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/offline/cli.html">Command Line</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/offline/configuration.html">CLI Configuration</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/offline/ant.html">Ant</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/userdocs/offline/bean.html">Cocoon Bean</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6', '../../skin/')" id="menu_1.2.6Title" class="menutitle">Developer's Guide</div>
+<div id="menu_1.2.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/developing/index.html">Index</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.2', '../../skin/')" id="menu_1.2.6.2Title" class="menutitle">Concepts</div>
+<div id="menu_1.2.6.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/developing/httprequest.html">Internals</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/extending.html">Extending</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/avalon.html">Avalon</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/source.html">Source Handling</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/stores.html">Stores</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/datasources.html">Using Databases</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/parent-component-manager.html">Parent CM</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/deliquick.html">DELI Quick Start</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/deli.html">DELI</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.3', '../../skin/')" id="menu_1.2.6.3Title" class="menutitle">Developing Webapps</div>
+<div id="menu_1.2.6.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/session.html">Sessions</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/contexts.html">Session Contexts</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.3.4', '../../skin/')" id="menu_1.2.6.3.4Title" class="menutitle">Authentication</div>
+<div id="menu_1.2.6.3.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/authentication.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/authentication/authentication-handler.html">The Authentication Handler</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/authentication/authenticating_user.html">Authenticating a User</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/authentication/user_management.html">User Management</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/authentication/application_management.html">Application Management</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/authentication/module_management.html">Module Management</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/authentication/user_administration.html">User Administration</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/authentication/summary.html">Configuration Summary</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/authentication/pipeline_patterns.html">Pipeline Patterns</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/forms.html">Simple Forms</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/webapps/portal.html">Portal FW</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.4', '../../skin/')" id="menu_1.2.6.4Title" class="menutitle">Building a portal using the Portal Engine</div>
+<div id="menu_1.2.6.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/developing/portal/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/portal/portal-block.html">Portal Engine</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.4.3', '../../skin/')" id="menu_1.2.6.4.3Title" class="menutitle">Configuring Coplets</div>
+<div id="menu_1.2.6.4.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/developing/portal/coplets.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/portal/coplets/uricoplet.html">The URICoplet</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/portal/coplets/cachinguricoplet.html">The CachingURICoplet</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/portal/layout_skins.html">Layout and Skins</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/portal/events.html">Event Handling</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/portal/profiles.html">Profiles</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/portal/wsrp.html">WSRP Support</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/portal/authentication.html">Authentication</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/portal/forms.html">Form handling</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/portal/basket.html">A Basket</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../2.1/developing/web3.html">Connect to SAP R/3</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/2.1/apidocs/index.html">API (Javadoc)</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.7', '../../skin/')" id="menu_1.2.7Title" class="menutitle">Tutorials</div>
+<div id="menu_1.2.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/tutorial/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/tutorial/tutorial-develop-webapp.html">WebApp</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/tutorial/tutorial-generator.html">Custom Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/tutorial/tutorial-shots.html">Tutorial screenshots</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/tutorial/tutorial-rmi-generator.html">RMIServer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.8', '../../skin/')" id="menu_1.2.8Title" class="menutitle">FAQ</div>
+<div id="menu_1.2.8" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/faq/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-install.html">Install</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-configure-environment.html">Configure</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-cvs.html">CVS/SVN</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-configure-c2.html">Configure C2</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-databases.html">Databases</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-xsp.html">XSP</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-xslt.html">XSLT</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-debugging.html">Debugging</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-sitemap.html">Sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-generators.html">Generators</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-transformers.html">Transformers</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-serializers.html">Serializers</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-matchers.html">Matchers</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-selectors.html">Selectors</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-actions.html">Actions</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/faq/faq-aggregators.html">Aggregators</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.9', '../../skin/')" id="menu_1.2.9Title" class="menutitle">How Tos</div>
+<div id="menu_1.2.9" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/howto/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/howto/howto-explore-samples.html">Samples</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/howto/howto-paginator-transformer.html">Paginator</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/howto/howto-html-pdf-publishing.html">HTML-PDF</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/howto/wsproxy-generator.html">Web Syndication</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/howto/howto-flow-debugger.html">Flow Debugger</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/howto/howto-author-howto.html">Author How-To</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/howto/howto-author-faq.html">Author FAQ</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/howto/howto-author-snippet.html">Author Snippet</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/howto/howto-author-core-docs.html">Author Docs</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/howto/howto-patch.html">Prepare patch</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/howto/howto-bugzilla.html">Bugzilla</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../2.1/performancetips.html">Performance</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.11', '../../skin/')" id="menu_1.2.11Title" class="menutitle">Snippets</div>
+<div id="menu_1.2.11" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/snippet/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/snippet/snippet-xslt-options.html">XSLT Processor Options</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/snippet/snippet-internal-pipeline.html">Internal Pipeline</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/cocoon/">Wiki Docs</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3', '../../skin/')" id="menu_1.3Title" class="menutitle">Status</div>
+<div id="menu_1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/changes.html">Changes</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/todo.html">To Do</a>
+</div>
+<div onclick="SwitchMenu('menu_1.3.3', '../../skin/')" id="menu_1.3.3Title" class="menutitle">Planning Notes</div>
+<div id="menu_1.3.3" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.3.3.1', '../../skin/')" id="menu_1.3.3.1Title" class="menutitle">Overview</div>
+<div id="menu_1.3.3.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/plan/overview/index.html">Planning Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/plan/overview/roadmap.html">Roadmap</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3.3.2', '../../skin/')" id="menu_1.3.3.2Title" class="menutitle">Documentation</div>
+<div id="menu_1.3.3.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/plan/documentation/doc.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/plan/documentation/linkstatus.html">Fix broken links</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3.3.3', '../../skin/')" id="menu_1.3.3.3Title" class="menutitle">Other Planning</div>
+<div id="menu_1.3.3.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/plan/otherplanning/release.html">Release Plan</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/plan/otherplanning/samples.html">Cocoon Samples</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/plan/otherplanning/proposed-toc.html">Proposed TOC</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/plan/otherplanning/updating.html">Updating Cocoon</a>
+</div>
+</div>
+</div>
+<div class="menuitem">
+<a href="http://issues.apache.org/jira/browse/COCOON">Patch queue</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', '../../skin/')" id="menu_1.4Title" class="menutitle">Community</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../2.1/bylaws-addendum.html">Cocoon Bylaws</a>
+</div>
+<div class="menuitem">
+<a href="../../2.1/who.html">Hall of Fame</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/community/contrib.html">Contributing</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/community/mail-lists.html">Mail Lists</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/community/mail-archives.html">Mail Archives</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.5', '../../skin/')" id="menu_1.5Title" class="menutitle">Project</div>
+<div id="menu_1.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://issues.apache.org/jira/browse/COCOON">Bug Database</a>
+</div>
+<div class="menuitem">
+<a href="http://svn.apache.org/viewcvs.cgi/cocoon/branches/BRANCH_2_1_X/?root=Apache-SVN">Code Repository</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/mirror.cgi#nightly">Dev Snapshots</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.6', '../../skin/')" id="menu_1.6Title" class="menutitle">Other Releases</div>
+<div id="menu_1.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://cocoon.apache.org/1.x/">Cocoon 1.x</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/2.0/">Cocoon 2.0</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.7', '../../skin/')" id="menu_1.7Title" class="menutitle">External</div>
+<div id="menu_1.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://wiki.apache.org/cocoon/GT2005Hackaton">2005 Get Together</a>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+  |alternative credits
+  +-->
+<div id="credit2">
+<a href="http://apachecon.com/"><img border="0" title="ApacheCon US 2005" alt="ApacheCon US 2005 - logo" src="http://apache.org/images/ac2005us_blue_125x125.jpg" style="width: 125px;height: 125px;"></a>
+</div>
+</div>
+<!--+
+    |end Menu
+    +-->
+<!--+
+    |start content
+    +-->
+<div id="content">
+<h1>I18n Transformer</h1>
+<a name="N10007"></a><a name="Introduction"></a>
+<h2 class="h3">Introduction</h2>
+<div class="section">
+<p>Developing and maintaining multi-language sites is a common problem for web
+developers. The usage of XML and XSL makes this task much easier, especially
+with content, logic and presentation separation concept.</p>
+<ul>
+
+<li>Internationalization (i18n): Process of developing a product in such a way
+that it works with data in different languages and can be adapted to various
+target markets without engineering changes.</li>
+
+<li>Localization (l10n): Subsequent process of translating and adapting a
+product to a given market's cultural conventions.</li>
+
+</ul>
+<p>This approach for internationalization (further - i18n) of XML documents
+within Cocoon is based on a transformer -
+<a href="http://cocoon.apache.org/2.1/apidocs/org/apache/cocoon/transformation/I18nTransformer.html">
+<tt>I18nTransformer</tt> </a> , which uses XML dictionaries for all the
+multilingual data. The namespace URI of i18n transformer is defined as follows:
+</p>
+<pre>xmlns:i18n="http://apache.org/cocoon/i18n/2.1</pre>
+<a name="N10020"></a><a name="Other+implementation+details"></a>
+<h3 class="h4">Other implementation details</h3>
+<ul>
+
+<li>Default name in sitemap: i18n</li>
+
+<li>Class: org.apache.cocoon.transformation.I18nTransformer</li>
+
+<li>Cacheable: no.</li>
+
+<li>Poolable: yes.</li>
+
+</ul>
+</div>
+<a name="N10032"></a><a name="Brief+description"></a>
+<h2 class="h3">Brief description</h2>
+<div class="section">
+<p>The following features are supported by the i18n transformer:</p>
+<ul>
+
+<li>Text translation</li>
+
+<li>Attribute translation</li>
+
+<li>Parameter substitution (with translation if needed)</li>
+
+<li>Date, number and currency formatting</li>
+
+</ul>
+<p>A simple example of i18n markup:</p>
+<pre>&lt;para title="first" name="article"  i18n:attr="title name"&gt;
+  &lt;i18n:text&gt;This text will be translated.&lt;/i18n:text&gt;
+&lt;/para&gt;</pre>
+<p>The text inside the <tt>&lt;i18n:text&gt;</tt> will be used as a key to find
+the translation in the message catalogue. All attributes (of any other namespace
+element) that are listed in the <tt>i18n:attr</tt> attribute also will be
+translated and their values will be used as dictionary keys.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">Although, date, time, number and currency formatting is also
+supported, in some cases it is needed to use XSP or some other dynamic means to
+achieve more flexibility.</div>
+</div>
+</div>
+<a name="N1005A"></a><a name="Markup+Reference"></a>
+<h2 class="h3">Markup Reference</h2>
+<div class="section">
+<a name="N1005E"></a><a name="Summary"></a>
+<h3 class="h4">Summary</h3>
+<p>Special tags in i18n namespace are used to mark parts of XML document that
+should be substituted with dictionary messages.</p>
+<p>Tags list</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<tbody>
+
+<tr>
+
+<th>
+
+<p>Element</p>
+
+</th>
+<th>
+
+<p>Description</p>
+
+</th>
+
+</tr>
+
+<tr>
+
+<td><a href="#i18n_text">i18n:text</a></td>
+<td>
+
+<p>Used for simple text translation</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td><a href="#i18n_attr">i18n:attr</a></td>
+<td>
+
+<p>Attribute for any element (not in i18n-namespace). Contains the names of
+other attributes of that element to be translated</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td><a href="#i18n_translate">i18n:translate</a></td>
+<td>
+
+<p>Translates text with parameter substitution</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td><a href="#i18n_param">i18n:param</a></td>
+<td>
+
+<p>Used with <tt>i18n:translate</tt> to provide substitution parameter</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td><a href="#i18n_date">i18n:date</a></td>
+<td>
+
+<p>Formats the date in localized manner</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td><a href="#i18n_time">i18n:time</a></td>
+<td>
+
+<p>Formats the time in localized manner</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td><a href="#i18n_datetime">i18n:date-time</a></td>
+<td>
+
+<p>Formats the date and time in localized manner</p>
+
+</td>
+
+</tr>
+
+<tr>
+
+<td><a href="#i18n_number">i18n:number</a></td>
+<td>
+
+<p>Formats numbers, currencies and percent in localized manner</p>
+
+</td>
+
+</tr>
+
+</tbody>
+
+</table>
+<a name="N100ED"></a><a name="i18n%3Atext"></a>
+<h3 class="h4">i18n:text</h3>
+<p>To translate some simple text we use the <tt>&lt;i18n:text&gt;</tt> tag:</p>
+<pre>&lt;i18n:text&gt;Text to be translated&lt;/i18n:text&gt;</pre>
+<p>The text between the <tt>&lt;i18n:text&gt;</tt>-tags is used as a key to find
+the translation in the dictionary.</p>
+<p>The 'i18n:key' attribute can be used to specify a special key for the
+dictionary. Normally, the text itself is used as the key to find the translation
+in the dictionary. If we specify the 'i18n:key' attribute this key is used to
+find the translation and the text itself is used as the default value, if no
+translation can be found.</p>
+<pre>&lt;i18n:text i18n:key="key_text"&gt;Default value&lt;/i18n:text&gt;</pre>
+<p>Messages can be taken from multiple dictionaries. The dictionaries are
+configured in the sitemap (see further on), and each dictionary is assigned an
+id. There is one dictionary that serves as the default one. To translate a key
+using a non-default dictionary, mention the id of the dictionary in an
+i18n:catalogue attribute:</p>
+<pre>&lt;i18n:text i18n:catalogue="menu"&gt;key_text&lt;/i18n:text&gt;</pre>
+<a name="N10105"></a><a name="Translation+with+param+substitution"></a>
+<h3 class="h4">Translation with param substitution</h3>
+<p>To translate the text with param substitution the
+<tt>&lt;i18n:translate&gt;</tt> tag must be used. We can specify some
+<tt>&lt;i18n:param&gt;</tt>-tags which contain parameters. The values of these
+parameters will be inserted into the translated text, replacing placeholders.
+Placeholders have the following syntax: <tt>\{[0-9]+\}</tt>. An example:</p>
+<pre>    
+&lt;i18n:translate&gt;
+    &lt;i18n:text&gt;Some {0} was inserted {1}.&lt;/i18n:text&gt;
+    &lt;i18n:param&gt;text&lt;/i18n:param&gt;
+    &lt;i18n:param&gt;here&lt;/i18n:param&gt;
+&lt;/i18n:translate&gt;</pre>
+<p>Now we want to translate this into German. First, the processor will look
+into the dictionary, we specified, for the string:</p>
+<p>
+<em>Some {0} was inserted {1}.</em>
+</p>
+<p>It finds the string and translates it to German:</p>
+<p>
+<em>Etwas {0} wurde {1} eingesetzt.</em>
+</p>
+<p>Now the processor will replace the parameters. {0} will be replaced with
+"text" and {1} with "here". This results in:</p>
+<p>
+<em>Etwas text wurde here eingesetzt.</em>
+</p>
+<p>As we see, it is sometimes necessary to translate the parameters as well,
+since "here" is not a German word and "text" should be written uppercase. This
+can simply be done by marking up the parameters with <tt>&lt;i18n:text&gt;</tt>
+again:</p>
+<pre>&lt;i18n:translate&gt;
+    &lt;i18n:text&gt;Some {0} was inserted {1}.&lt;/i18n:text&gt;
+    &lt;i18n:param&gt;&lt;i18n:text&gt;text&lt;/i18n:text&gt;&lt;/i18n:param&gt;
+    &lt;i18n:param&gt;&lt;i18n:text&gt;here&lt;/i18n:text&gt;&lt;/i18n:param&gt;
+&lt;/i18n:translate&gt;</pre>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">Generally, it is not necessary for the text for param
+substitution to be translated. E.g., it can come from a database with predefined
+placeholders for i18n params and there is no need to use
+<tt>&lt;i18n:text&gt;</tt> for its translation.</div>
+</div>
+<p>Parameters can be dates, numbers and currencies. Use <strong>type</strong>
+attribute to specify one of the possible types: <tt>date | time | date-time |
+number | currency | currency-no-unit | int-currency | percent </tt>. See more on
+params <a href="#i18n_param">here</a>.</p>
+<a name="N10143"></a><a name="Attributes"></a>
+<h3 class="h4">Attributes</h3>
+<p>Additionally we can translate attributes. This is very useful for HTML-forms
+since labels of buttons are set via an attribute in HTML. To translate
+attributes of a tag, add an additional attribute named 'i18n:attr' containing a
+list of attributes, which should be translated, separated by spaces. An example:
+</p>
+<pre>&lt;INPUT type="submit" value="Submit" i18n:attr="value"/&gt;</pre>
+<p>The attribute, which will be translated is 'value'. Parameter replacement is
+not available for attributes at this time.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">Some versions of Xerces have a bug in removeAttribute() method
+implementation and this results in a NullPointerException if attributes
+translation is used. The solution is to upgrade to a newer version of Xerces.
+</div>
+</div>
+<p>Just as with i18n:text, the translations for attributes can come from
+multiple dictionaries. To use a specific dictionary, add the id of the
+dictionary before the key, separated by a colon:</p>
+<pre>&lt;INPUT type="submit" value="form:Submit" i18n:attr="value"/&gt;</pre>
+<a name="N10159"></a><a name="Date%2C+time+and+number+formatting"></a>
+<h3 class="h4">Date, time and number formatting</h3>
+<p>To format dates according to the current locale use <tt>&lt;i18n:date
+src-pattern="dd/MM/yyyy" pattern="dd:MMM:yyyy" value="01/01/2001" /&gt;</tt>.
+The <tt>'src-pattern'</tt> attribute will be used to parse the
+<tt>'value'</tt>, then the date will be formatted according to the current
+locale using the format specified by <tt>'pattern'</tt> attribute.</p>
+<p>To format time for a locale (e.g. de_DE) use <tt>&lt;i18n:time
+src-pattern="dd/MM/yyyy hh:mm" locale="de_DE" value="01/01/2001 12:00"
+/&gt;</tt>. The <tt>'src-pattern'</tt> and <tt>'pattern'</tt> attribute may also
+contain <tt>'short'</tt>, <tt>'medium'</tt>, <tt>'long'</tt> or
+<tt>'full'</tt>. The date will be formatted according to this format.</p>
+<p>To format date and time use <tt>&lt;i18n:date-time /&gt;</tt>.</p>
+<p>It is also possible to specify a src-locale: <tt>&lt;i18n:date
+src-pattern="short" src-locale="en_US" locale="de_DE"&gt; 12/24/01
+&lt;/i18n:date&gt; </tt> will result in 24.12.2001</p>
+<p>A given real <tt>pattern</tt> and <tt>src-pattern</tt> (not short, medium,
+long, full) overwrites the <tt>locale</tt> and <tt>src-locale</tt>.</p>
+<p>If no pattern was specified then the date will be formatted with the
+<tt>DateFormat.DEFAULT</tt> format (both date and time). If no value for the
+date is specified then the current date will be used. E.g.:
+<tt>&lt;i18n:date/&gt; </tt> will result in the current date, formatted with
+default localized pattern.</p>
+<p>To format numbers in locale sensitive manner use <tt>&lt;i18n:number
+pattern="0.##" value="2.0" /&gt;</tt>. This will be useful also for Arabic,
+Indian, etc. number formatting. Additionally, currencies and percent formatting
+can be used, known types are <tt>currency</tt>, <tt>currency-no-unit</tt>,
+<tt>int-currency</tt>, <tt>int-currency-no-unit</tt> and <tt>percent</tt>.
+Another useful attribute is <tt>fraction-digits</tt>, E.g.:</p>
+<ul>
+
+<li>
+<tt>&lt;i18n:number type="currency" value="1703.7434" /&gt;</tt> will result
+in localized presentation of the value for US locale: $1,703.74</li>
+
+<li>
+<tt>&lt;i18n:number type="currency" fraction-digits="3" value="1703.7434"
+/&gt;</tt> will result in localized presentation of the value for US locale so
+you can print gasonline prices: $1,703.743</li>
+
+<li>
+<tt>&lt;i18n:number type="int-currency" value="170374" /&gt;</tt> will
+result in localized presentation of the value for US locale: $1,703.74, and
+170374 (with currency unit) for a currency without subunit.</li>
+
+<li>
+<tt>&lt;i18n:number type="int-currency-no-unit" value="170374" /&gt;</tt>
+will result in localized presentation of the value for US locale: 1,703.74, and
+170374 (without currency unit) for a currency without subunit.</li>
+
+<li>
+<tt>&lt;i18n:number type="percent" value="1.2" /&gt;</tt> will result in
+localized percent value: %120 for most of the locales.</li>
+
+</ul>
+<p>If someone from US want to see sales figures from a store in Germany,
+formatted using the german currency, you would need to use locale="de_DE" to get
+the currency right, e.g. 100,00 &euro;. The decimal and grouping separator is then
+also from the de_DE locale. This may lead to some confusion because people from
+US know the "," as thousand separator. Therefore a "currency" attribute is
+available, so that the output from <tt>&lt;i18n:number type="currency"
+locale="en_US" currency="de_DE"&gt;100&lt;/i18n:number&gt;</tt> results in
+100.00 &euro;</p>
+<p>Also, date and number formatting can be used with substitution params.
+<tt>type</tt> attribute must be used with params to indicate the param type
+(date, number, currency, ...). Default type is <tt>string</tt>.</p>
+<pre>&lt;i18n:translate&gt;
+  &lt;i18n:text&gt;
+    You have to pay {0} for {1} pounds or {2} of your profit. Valid from {3}
+  &lt;/i18n:text&gt;
+  &lt;i18n:param type="currency"
+              pattern="$#,##0.00"&gt;102.5&lt;/i18n:param&gt;
+  &lt;i18n:param type="number" value="2.5"&gt;
+  &lt;i18n:param type="percent" value="0.10" /&gt;    
+  &lt;i18n:param type="date" pattern="dd-MMM-yy" /&gt;
+&lt;/i18n:translate&gt;</pre>
+<p>Result will be like this: <tt>You have to pay $102.5 for 2.5 pounds or 10% of
+your profit. Valid from 13-Jun-01</tt>
+</p>
+<a name="N101E7"></a><a name="Catalogues+%28Dictionaries%29"></a>
+<h3 class="h4">Catalogues (Dictionaries)</h3>
+<p>Message catalogues contain translations to be used by the i18n transformer.
+</p>
+<a name="N101ED"></a><a name="Catalogues+format"></a>
+<h4>Catalogues format</h4>
+<p>A single message catalogue file contains translations for a particular
+language, e.g.:</p>
+<pre>&lt;?xml version="1.0"?&gt;
+  &lt;!-- message catalogue file for locale ... --&gt;
+  &lt;catalogue xml:lang="locale"&gt;
+         &lt;message key="key"&gt;text&lt;/message&gt;
+         &lt;message key="other_key"&gt;Other text&lt;/message&gt;         
+         ....
+  &lt;/catalogue&gt;</pre>
+<p>Where <strong>key</strong> attribute specifies a particular message for that
+language.</p>
+<a name="N101FA"></a><a name="Usage"></a>
+<h4>Usage</h4>
+<p>Files to be translated contain i18n markup. At runtime, the i18n transformer
+will find a message catalogue for the user's locale, and will appropriately
+replace the text between the <tt>&lt;i18n:text&gt;</tt> markup, using either the
+value between the tags as the lookup key or the value of the <tt>key</tt>
+attribute if specified. In the latter case the body value of the tag will be
+used in case of the not found translation.</p>
+<p>If the i18n transformer cannot find an appropriate message catalogue for the
+user's given locale, it will recursively try to locate a <em>parent</em>
+message catalogue, until a valid catalogue can be found. ie:</p>
+<ul>
+
+<li>
+
+<strong>catalogue</strong>_<em>language</em>_<em>country</em>_<em>variant</em>.xml
+</li>
+
+<li>
+<strong>catalogue</strong>_<em>language</em>_<em>country</em>.xml</li>
+
+<li>
+<strong>catalogue</strong>_<em>language</em>.xml</li>
+
+<li>
+<strong>catalogue</strong>.xml</li>
+
+</ul>
+<p>eg: Assuming a basename of <em>messages</em> and a locale of <em>en_AU</em>
+(no variant), the following search will occur:</p>
+<ul>
+
+<li>
+<strong>messages</strong>_<em>en</em>_<em>AU</em>.xml</li>
+
+<li>
+<strong>messages</strong>_<em>en</em>.xml</li>
+
+<li>
+<strong>messages</strong>.xml</li>
+
+</ul>
+<p>This allows the developer to write a hierarchy of message catalogues, at each
+defining messages with increasing depth of variation.</p>
+<a name="N10258"></a><a name="Sitemap+configuration"></a>
+<h3 class="h4">Sitemap configuration</h3>
+<pre>&lt;map:transformer name="i18n"
+     src="org.apache.cocoon.transformation.I18nTransformer"&gt;
+
+     &lt;catalogues default="messages"&gt;
+       &lt;catalogue id="messages" name="messages" location="translations"/&gt;
+       &lt;catalogue id="menu" name="menu" location="{defaults:skin}/translations"/&gt;
+     &lt;/catalogues&gt;
+     &lt;untranslated-text&gt;untranslated&lt;/untranslated-text&gt;
+     &lt;cache-at-startup&gt;true&lt;/cache-at-startup&gt;
+&lt;/map:transformer&gt;</pre>
+<p>where:</p>
+<ul>
+
+<li>
+<strong>catalogues</strong>: container element in which the catalogues are
+defined. It must have an attribute 'default' whose value is one of the id's of
+the catalogue elements. (<em>mandatory</em>).</li>
+
+<li>
+<strong>catalogue</strong>: specifies a catalogue. It takes 3 required
+attributes: id (can be wathever you like), name (base name of the catalogue) and
+location (location of the message catalogue). The name and location attributes
+can contain references to "input modules" (same syntax as in other places in the
+sitemap). They are resolved on each usage of the transformer, so they can refer
+to e.g. request parameters. (<em>at least 1 catalogue element required</em>).
+</li>
+
+<li>
+<strong>untranslated-text</strong>: text used for untranslated keys (default
+is to output the key name). For the i18n:text element, this will only be used if
+the content of the i18n:text element was empty (thus when the key was specified
+using the i18n:key attribute). Otherwise the content of the i18n:text element
+will be outputted when no translation is found.</li>
+
+<li>
+<strong>cache-at-startup</strong>: flag whether to cache messages at startup
+(false by default).</li>
+
+</ul>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">The configuration syntax was changed to add support for
+configuring mulitple catalogues. The old syntax, using the elements
+'catalogue-name' and 'catalogue-location', is still supported, but cannot be
+used concurrently with the new syntax.</div>
+</div>
+<p>To use the transformer in a pipeline, simply specify it in a particular
+transform and indicate the needed locale. eg:</p>
+<pre>&lt;map:match pattern="file"&gt;
+        &lt;map:generate src="file.xml"/&gt;
+         &lt;map:transform type="i18n"&gt;
+           &lt;map:parameter name="locale" value="en_AU"/&gt;
+         &lt;/map:transform&gt;
+         &lt;map:serialize/&gt;
+&lt;/map:match&gt;</pre>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">Note, that since Cocoon version 2.0.1 you should specify the
+needed locale as a parameter at pipeline level. This gives more flexibility in
+locale selection, e.g. URI parts can be used: <tt>/en_AU/file</tt>. See
+LocaleAction documentation for other possibilities.</div>
+</div>
+<p>The default catalogue can be changed at the pipeline level by specifying a
+parameter <strong>default-catalogue-id</strong>. Likewise, a parameter
+<strong>untranslated-text</strong> can be used to override the default
+untranslated text.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">Before multiple catalogues were supported, the catalogue could
+be defined at the pipeline level by adding parameters
+<strong>catalogue-name</strong> and <strong>catalogue-location</strong>. This is
+still supported, but cannot be used concurrently with the
+<strong>default-catalogue-id</strong> parameter.</div>
+</div>
+</div>
+<a name="N102AC"></a><a name="Samples"></a>
+<h2 class="h3">Samples</h2>
+<div class="section">
+<p>i18n samples from Cocoon demonstrate all the features of i18n transformer and
+give some ideas on user's locale determination.</p>
+</div>
+<a name="N102B2"></a><a name="Usage+Pattern+for+Dictionary+Generator+Stylesheet"></a>
+<h2 class="h3">Usage Pattern for Dictionary Generator Stylesheet</h2>
+<div class="section">
+<p>It is sometimes better to maintain a master dictionary that contains all the
+keys with translations in all the supported languages. For this purposes several
+helper stylesheets can be used. The stylesheets are found in Cocoon sources:
+<tt>src/resources/dev/i18n</tt> (in version 2.1 and higher).<br>
+Below is given an example for a new language addition using a master dictionary.
+</p>
+<a name="N102BD"></a><a name="Initial+key+generation"></a>
+<h3 class="h4">Initial key generation</h3>
+<p>To generate all the i18n keys from a source file (XML or XSP) use the
+<strong>markup2message.xsl</strong> stylesheet. Simply transform your content
+file using this stylesheet. Result will be an empty message catalogue for the
+given language.</p>
+<a name="N102C6"></a><a name="Key+generation+from+master+dictionary"></a>
+<h3 class="h4">Key generation from master dictionary</h3>
+<p>Generate a dictionary with keys and placeholders for Spanish translations
+using the <strong>merge.xsl</strong> stylesheet. Optionally, for one of the
+languages existing translations can be kept. To do it set stylesheet params
+(manually in stylesheet or in command-line):</p>
+<ul>
+
+<li>
+<strong>mode = keys</strong> (indicates, that only keys must be in result)
+</li>
+
+<li>
+<strong>new-lang = es </strong> (language to be added)</li>
+
+<li>
+<strong>keep-lang = en </strong> (language to be kept in result, for
+convenience)</li>
+
+</ul>
+<p>Command line for Xalan (Of course, Xerces and Xalan must be in your
+classpath):</p>
+<pre>java org.apache.xalan.xslt.Process -IN simple_dict.xml -XSL merge.xsl \
+-OUT simple_dict_es.xml -PARAM mode keys -PARAM new-lang es -PARAM keep-lang en
+</pre>
+<p>
+<sub>(Windows users: Do not enter '\' symbol, continue typing on the same
+line.)</sub>
+</p>
+<p>This will create a file simple_dict_es.xml with entries, keys and
+placeholders.</p>
+<a name="N102E9"></a><a name="Translation"></a>
+<h3 class="h4">Translation</h3>
+<p>Replace placeholders with translation according to the keys or original
+translations, if they were kept during generation.</p>
+<a name="N102EF"></a><a name="Add+to+the+master+dictionary"></a>
+<h3 class="h4">Add to the master dictionary</h3>
+<p>Use the same stylesheet for this purpose with this params:</p>
+<pre>mode = merge
+new-lang = es
+new-dict = simple_dict_es.xml
+</pre>
+<p>Command line for Xalan:</p>
+<pre>java org.apache.xalan.xslt.Process -IN simple_dict.xml -XSL merge.xsl \
+-OUT simple_dict_new.xml -PARAM mode merge -PARAM new-lang es \
+-PARAM new-dict simple_dict_es.xml
+</pre>
+<p>
+<sub>(Windows users: Do not enter '\' symbol, continue typing on the same
+line.)</sub>
+</p>
+</div>
+<a name="N102FE"></a><a name="Finally"></a>
+<h2 class="h3">Finally</h2>
+<div class="section">
+<a name="N10302"></a><a name="To+be+done"></a>
+<h3 class="h4">To be done</h3>
+<ul>
+
+<li>Multiple dictionaries per pipeline support - <strong>done in v2.1</strong>
+
+</li>
+
+<li>Markup support in translations - <strong>done in v2.1</strong>
+</li>
+
+<li>Named parameters support - <strong>done in v2.1</strong>
+</li>
+
+<li>Dictionary caching - <strong>done in v2.1</strong>
+</li>
+
+<li>Different bundle implementations support - <strong>done in v2.1</strong>
+
+</li>
+
+</ul>
+<a name="N10323"></a><a name="Contacts"></a>
+<h3 class="h4">Contacts</h3>
+<p>Feel free to contact for any comments and improvement ideas either directly
+<a href="mailto:kpiroumian.at.apache.org">Konstantin Piroumian</a> or through the
+<a href="http://cocoon.apache.org/community/mail-lists.html">Cocoon Mail
+List</a>.</p>
+<div class="daisy-edit-link">
+<p>
+<em>Errors and Improvements?</em>
+                 If you see any errors or potential improvements in this document
+                 please help us:
+                <a class="external" href="http://cocoon.zones.apache.org/daisy/legacydocs/463">
+                  View, Edit or comment on
+                </a> the latest development version (registration required).
+              </p>
+</div>
+</div>
+</div>
+<!--+
+    |end content
+    +-->
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<!--+
+    |start bottomstrip
+    +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+        Copyright &copy;
+         1999-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+<div id="feedback">
+    Send feedback about the website to:
+  <a id="feedbackto" href="mailto:dev@cocoon.apache.org?subject=[WEBSITE]%C2%A02.1/userdocs/i18nTransformer.html">dev@cocoon.apache.org</a>
+</div>
+<!--+
+    |end bottomstrip
+    +-->
+</div>
+</body>
+</html>

Propchange: cocoon/site/site/2.1/userdocs/i18nTransformer.html
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message