[Debian-l10n-commits] r1521 - in /translate-toolkit/trunk: ./ debian/ debian/patches/ tools/ translate/ translate/convert/ translate/doc/user/ translate/lang/ translate/misc/ translate/misc/typecheck/ translate/storage/ translate/storage/placeables/ translate/storage/xml_extract/ translate/tools/

nekral-guest at users.alioth.debian.org nekral-guest at users.alioth.debian.org
Mon Dec 29 16:04:36 UTC 2008


Author: nekral-guest
Date: Mon Dec 29 16:04:35 2008
New Revision: 1521

URL: http://svn.debian.org/wsvn/?sc=1&rev=1521
Log:
Updated to release 1.2.0

Added:
    translate-toolkit/trunk/translate/convert/odf2xliff
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/convert/odf2xliff
    translate-toolkit/trunk/translate/convert/odf2xliff.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/convert/odf2xliff.py
    translate-toolkit/trunk/translate/convert/xliff2odf
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/convert/xliff2odf
    translate-toolkit/trunk/translate/convert/xliff2odf.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/convert/xliff2odf.py
    translate-toolkit/trunk/translate/doc/user/toolkit-mozilla_l10n_scripts.html
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/doc/user/toolkit-mozilla_l10n_scripts.html
    translate-toolkit/trunk/translate/doc/user/toolkit-odf2xliff.html
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/doc/user/toolkit-odf2xliff.html
    translate-toolkit/trunk/translate/doc/user/toolkit-pretranslate.html
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/doc/user/toolkit-pretranslate.html
    translate-toolkit/trunk/translate/lang/bn.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/lang/bn.py
    translate-toolkit/trunk/translate/lang/kn.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/lang/kn.py
    translate-toolkit/trunk/translate/lang/te.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/lang/te.py
    translate-toolkit/trunk/translate/misc/context.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/misc/context.py
    translate-toolkit/trunk/translate/misc/contextlib.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/misc/contextlib.py
    translate-toolkit/trunk/translate/misc/file_discovery.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/misc/file_discovery.py
    translate-toolkit/trunk/translate/misc/rich.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/misc/rich.py
    translate-toolkit/trunk/translate/misc/typecheck/
      - copied from r1520, translate-toolkit/branches/upstream/current/translate/misc/typecheck/
    translate-toolkit/trunk/translate/storage/odf_io.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/storage/odf_io.py
    translate-toolkit/trunk/translate/storage/odf_shared.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/storage/odf_shared.py
    translate-toolkit/trunk/translate/storage/placeables/
      - copied from r1520, translate-toolkit/branches/upstream/current/translate/storage/placeables/
    translate-toolkit/trunk/translate/storage/xml_extract/
      - copied from r1520, translate-toolkit/branches/upstream/current/translate/storage/xml_extract/
    translate-toolkit/trunk/translate/storage/xml_name.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/storage/xml_name.py
    translate-toolkit/trunk/translate/tools/pretranslate
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/tools/pretranslate
    translate-toolkit/trunk/translate/tools/pretranslate.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/tools/pretranslate.py
    translate-toolkit/trunk/translate/tools/test_pretranslate.py
      - copied unchanged from r1520, translate-toolkit/branches/upstream/current/translate/tools/test_pretranslate.py
Removed:
    translate-toolkit/trunk/tools/poen
Modified:
    translate-toolkit/trunk/PKG-INFO
    translate-toolkit/trunk/debian/changelog
    translate-toolkit/trunk/debian/patches/cleanup_install
    translate-toolkit/trunk/debian/rules
    translate-toolkit/trunk/setup.py
    translate-toolkit/trunk/translate/README
    translate-toolkit/trunk/translate/__version__.py
    translate-toolkit/trunk/translate/convert/po2html.py
    translate-toolkit/trunk/translate/convert/prop2po.py
    translate-toolkit/trunk/translate/doc/user/toolkit-creating_mozilla_pot_files.html
    translate-toolkit/trunk/translate/doc/user/toolkit-developers.html
    translate-toolkit/trunk/translate/doc/user/toolkit-formats.html
    translate-toolkit/trunk/translate/doc/user/toolkit-html2po.html
    translate-toolkit/trunk/translate/doc/user/toolkit-important_changes.html
    translate-toolkit/trunk/translate/doc/user/toolkit-index.html
    translate-toolkit/trunk/translate/doc/user/toolkit-mo.html
    translate-toolkit/trunk/translate/doc/user/toolkit-moz-l10n-builder.html
    translate-toolkit/trunk/translate/doc/user/toolkit-moz2po.html
    translate-toolkit/trunk/translate/doc/user/toolkit-php2po.html
    translate-toolkit/trunk/translate/doc/user/toolkit-po2tmx.html
    translate-toolkit/trunk/translate/doc/user/toolkit-podebug.html
    translate-toolkit/trunk/translate/doc/user/toolkit-poen.html
    translate-toolkit/trunk/translate/doc/user/toolkit-posegment.html
    translate-toolkit/trunk/translate/doc/user/toolkit-poterminology.html
    translate-toolkit/trunk/translate/storage/base.py
    translate-toolkit/trunk/translate/storage/dtd.py
    translate-toolkit/trunk/translate/storage/lisa.py
    translate-toolkit/trunk/translate/storage/mo.py
    translate-toolkit/trunk/translate/storage/statsdb.py
    translate-toolkit/trunk/translate/storage/test_po.py
    translate-toolkit/trunk/translate/storage/test_xliff.py
    translate-toolkit/trunk/translate/storage/xliff.py
    translate-toolkit/trunk/translate/tools/pocount.py
    translate-toolkit/trunk/translate/tools/podebug.py
    translate-toolkit/trunk/translate/tools/poterminology.py

Modified: translate-toolkit/trunk/PKG-INFO
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/PKG-INFO?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/PKG-INFO (original)
+++ translate-toolkit/trunk/PKG-INFO Mon Dec 29 16:04:35 2008
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: translate-toolkit
-Version: 1.2.0
+Version: 1.2.1
 Summary: The Translate Toolkit is a Python package that assists in localization of software.
 Home-page: http://translate.sourceforge.net/wiki/toolkit/index
 Author: Translate.org.za

Modified: translate-toolkit/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/debian/changelog?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/debian/changelog (original)
+++ translate-toolkit/trunk/debian/changelog Mon Dec 29 16:04:35 2008
@@ -1,3 +1,9 @@
+translate-toolkit (1.2.1-1) experimental; urgency=low
+
+  * New upstream release
+
+ -- Nicolas FRANCOIS (Nekral) <nicolas.francois at centraliens.net>  Mon, 29 Dec 2008 15:58:12 +0100
+
 translate-toolkit (1.2.0-1) experimental; urgency=low
 
   * New upstream release

Modified: translate-toolkit/trunk/debian/patches/cleanup_install
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/debian/patches/cleanup_install?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/debian/patches/cleanup_install (original)
+++ translate-toolkit/trunk/debian/patches/cleanup_install Mon Dec 29 16:04:35 2008
@@ -6,7 +6,7 @@
 
 --- a/setup.py
 +++ b/setup.py
-@@ -44,7 +44,6 @@
+@@ -46,7 +46,6 @@
                    ('convert', 'ts2po'),  ('convert', 'po2ts'),
                    ('convert', 'html2po'), ('convert', 'po2html'),
                    ('convert', 'ical2po'), ('convert', 'po2ical'),
@@ -14,10 +14,10 @@
                    ('convert', 'php2po'), ('convert', 'po2php'),
                    ('convert', 'rc2po'), ('convert', 'po2rc'),
                    ('convert', 'xliff2po'), ('convert', 'po2xliff'),
-@@ -64,7 +63,6 @@
-                   ('tools', 'poswap'),
+@@ -68,7 +67,6 @@
                    ('tools', 'poclean'),
                    ('tools', 'poterminology'),
+                   ('tools', 'pretranslate'),          
 -                  ('services', 'lookupclient.py'),
                    ('services', 'lookupservice')]
  

Modified: translate-toolkit/trunk/debian/rules
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/debian/rules?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/debian/rules (original)
+++ translate-toolkit/trunk/debian/rules Mon Dec 29 16:04:35 2008
@@ -17,7 +17,7 @@
 	mkdir -p man
 	for script in build/scripts-*/*; do \
 	  case $$(basename $$script) in \
-	  pocompendium|poen|pomigrate2|popuretext|poreencode|posplit|pocount|poglossary|pocommentclean) \
+	  pocompendium|pomigrate2|popuretext|poreencode|posplit|pocount|poglossary|pocommentclean) \
 	    ;; \
 	  *) \
 	    LC_ALL=C PYTHONPATH=. ./$$script --manpage \
@@ -62,13 +62,6 @@
 		/usr/share/doc/$(p)/html \
 		/usr/lib/python$(pv)/site-packages/translate/doc
 
-#	sed 's/oo2po\.main/oo2po.main2/g' $(d)/usr/bin/oo2po \
-#		> $(d)/usr/bin/oo2rpo
-#	chmod 755 $(d)/usr/bin/oo2rpo
-#	sed 's/po2oo\.main/po2oo.main2/g' $(d)/usr/bin/po2oo \
-#		> $(d)/usr/bin/rpo2oo
-#	chmod 755 $(d)/usr/bin/rpo2oo
-
 	rm -rf $(d)/usr/lib/python$(pv)/site-packages/translate/pootle
 	rm -f $(d)/usr/bin/pootle.py
 

Modified: translate-toolkit/trunk/setup.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/setup.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/setup.py (original)
+++ translate-toolkit/trunk/setup.py Mon Dec 29 16:04:35 2008
@@ -30,6 +30,7 @@
 initfiles = [(join(sitepackages,'translate'),[join('translate','__init__.py')])]
 
 subpackages = ["convert", "misc", "storage", join("storage", "versioncontrol"), 
+        join("storage", "placeables"), join("storage", "xml_extract"), join("misc", "typecheck"),
         "filters", "tools", "services", "search", join("search", "indexing"), "lang"]
 # TODO: elementtree doesn't work in sdist, fix this
 packages = ["translate"]
@@ -53,6 +54,7 @@
                   ('convert', 'po2tmx'),
                   ('convert', 'po2wordfast'),
                   ('convert', 'csv2tbx'),
+                  ('convert', 'odf2xliff'), ('convert', 'xliff2odf'),
                   ('filters', 'pofilter'),
                   ('tools', 'pocompile'),
                   ('tools', 'poconflicts'),
@@ -65,11 +67,12 @@
                   ('tools', 'poswap'),
                   ('tools', 'poclean'),
                   ('tools', 'poterminology'),
+                  ('tools', 'pretranslate'),          
                   ('services', 'lookupclient.py'),
                   ('services', 'lookupservice')]
 
 translatebashscripts = [apply(join, ('tools', ) + (script, )) for script in [
-                  'pomigrate2', 'poen', 'pocompendium', 
+                  'pomigrate2', 'pocompendium', 
                   'posplit', 'popuretext', 'poreencode', 'pocommentclean'
                   ]]
 

Modified: translate-toolkit/trunk/translate/README
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/README?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/README (original)
+++ translate-toolkit/trunk/translate/README Mon Dec 29 16:04:35 2008
@@ -76,8 +76,9 @@
 reporting it as a bug.
 
 The package lxml is needed for XML file processing. Version 1.3.4 and upwards 
-should work. Alpha versions of lxml 2.0.0 have been tested.
-http://codespeak.net/lxml/
+should work in most cases, although the odf2xliff and xliff2odf tools
+require at least version 2.0.0 to function correctly. 
+from http://codespeak.net/lxml/
 
 The package lxml has dependencies on libxml2 and libxslt. Please check the lxml
 site for the recommended versions of these libraries.
@@ -90,6 +91,11 @@
 use libgettextpo from the gettext-tools package (it might have a slightly 
 different name on your distribution). This can greatly speed up access to PO 
 files, but has not yet been tested as extensively. Feedback is most welcome.
+
+When the environment variable PYTHONTYPECHECK is defined, the toolkit will
+enable dynamic type checking for certain functions in the toolkit (mostly
+those belonging the ODF-XLIFF code). This adds quite a bit of overhead and
+is only of use to programmers.
 
 Psyco can help to speed up several of the programs in the toolkit. It is
 optional, but highly recommended.
@@ -205,6 +211,8 @@
 csv2tbx  - Create TBX (TermBase eXchange) files from Comma Separated Value (CSV) files
 ini2po   - convert .ini files to to PO
 ical2po  - Convert iCalendar files (*.ics) to PO
+odf2xliff - Extract translatable strings from an ODF file into an XLIFF file
+xliff2odf - Combine an XLIFF file with an ODF template to generate a translated ODF file
 
 * Tools (Quality Assurance)
 pofilter - run any of the 40+ checks on your PO files

Modified: translate-toolkit/trunk/translate/__version__.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/__version__.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/__version__.py (original)
+++ translate-toolkit/trunk/translate/__version__.py Mon Dec 29 16:04:35 2008
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 """this file contains the version of translate"""
-ver = "1.2.0"
+ver = "1.2.1"
 build = 12001

Modified: translate-toolkit/trunk/translate/convert/po2html.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/convert/po2html.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/convert/po2html.py (original)
+++ translate-toolkit/trunk/translate/convert/po2html.py Mon Dec 29 16:04:35 2008
@@ -39,8 +39,9 @@
 
 class po2html:
     """po2html can take a po file and generate html. best to give it a template file otherwise will just concat msgstrs"""
-    def __init__(self, wrap=None):
+    def __init__(self, wrap=None, usetidy=None):
         self.wrap = wrap
+        self.tidy = tidy and usetidy
 
     def wrapmessage(self, message):
         """rewraps text as required"""
@@ -83,14 +84,14 @@
                 #   see test_po2html.py in line 67
                 htmlresult = htmlresult.replace(msgid, msgstr, 1)
         htmlresult = htmlresult.encode('utf-8')
-        if tidy:
+        if self.tidy:
             htmlresult = str(tidy.parseString(htmlresult))
         return htmlresult
 
-def converthtml(inputfile, outputfile, templatefile, wrap=None, includefuzzy=False):
+def converthtml(inputfile, outputfile, templatefile, wrap=None, includefuzzy=False, usetidy=True):
     """reads in stdin using fromfileclass, converts using convertorclass, writes to stdout"""
     inputstore = po.pofile(inputfile)
-    convertor = po2html(wrap=wrap)
+    convertor = po2html(wrap=wrap, usetidy=usetidy)
     if templatefile is None:
         outputstring = convertor.convertstore(inputstore, includefuzzy)
     else:
@@ -111,6 +112,10 @@
         parser.add_option("-w", "--wrap", dest="wrap", default=None, type="int",
                 help="set number of columns to wrap html at", metavar="WRAP")
         parser.passthrough.append("wrap")
+    if tidy is not None:
+        parser.add_option("", "--notidy", dest="usetidy", default=True,
+                help="disables the use of HTML tidy", action="store_false")
+        parser.passthrough.append("usetidy")
     parser.add_fuzzy_option()
     parser.run(argv)
 

Modified: translate-toolkit/trunk/translate/convert/prop2po.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/convert/prop2po.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/convert/prop2po.py (original)
+++ translate-toolkit/trunk/translate/convert/prop2po.py Mon Dec 29 16:04:35 2008
@@ -88,6 +88,8 @@
                 translatedprop = translatedpropfile.locationindex[origprop.name]
                 # Need to check that this comment is not a copy of the developer comments
                 translatedpo = self.convertunit(translatedprop, "translator")
+                if translatedpo is "discard":
+                    continue
             else:
                 translatedpo = None
             # if we have a valid po unit, get the translation and add it...

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-creating_mozilla_pot_files.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-creating_mozilla_pot_files.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-creating_mozilla_pot_files.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-creating_mozilla_pot_files.html Mon Dec 29 16:04:35 2008
@@ -22,63 +22,95 @@
 You can do this two ways:
 </p>
 <ol>
-<li class="level1"><div class="li"> Using Mozilla <acronym title="Concurrent Versions System">CVS</acronym></div>
+<li class="level1"><div class="li"> Using Mozilla source (from <acronym title="Concurrent Versions System">CVS</acronym> or Mercurial)</div>
 </li>
 <li class="level1"><div class="li"> Using an en-US <acronym title="Cross Platform Installer">XPI</acronym> file</div>
 </li>
 </ol>
 
 </div>
-<!-- SECTION "Creating Mozilla POT files" [1-119] -->
+<!-- SECTION "Creating Mozilla POT files" [1-147] -->
+<h2><a name="using_mercurial" id="using_mercurial">Using Mercurial</a></h2>
+<div class="level2">
+
+<p>
+
+Since Firefox 3.1 and Thunderbird 3.0, Mozilla has switched to using Mercurial for version control. See the Mozilla's <a href="https://developer.mozilla.org/En/L10n_on_Mercurial" class="urlextern" title="https://developer.mozilla.org/En/L10n_on_Mercurial">L10n on Mercurial</a> page for instructions on how to checkout and update your Mozilla sources and l10n files.
+</p>
+
+<p>
+You can use <a href="toolkit-mozilla_l10n_scripts.html#get_moz_enus.py" class="wikilink1" title="toolkit-mozilla_l10n_scripts.html">get_moz_enUS.py</a> to extract an en-US directory from the source tree:
+
+</p>
+<pre class="code">get_moz_enUS.py -s mozilla-central/ -d l10n/ -p browser</pre>
+
+<p>
+
+This will move the correct en-US files to <code>l10n/en-US</code>.  You can now create <acronym title="Gettext Portable Object Template">POT</acronym> files as follows:
+
+</p>
+<pre class="code">moz2po -P l10n/en-US l10n/pot</pre>
+
+<p>
+
+This will create the <acronym title="Gettext Portable Object Template">POT</acronym> files in <code>l10n/pot</code> using the American English files from <code>en-US</code>.  You now have a set of <acronym title="Gettext Portable Object Template">POT</acronym> files 
+that you can use for translation or updating your existing <acronym title="Gettext Portable Object">PO</acronym> files.
+</p>
+
+</div>
+<!-- SECTION "Using Mercurial" [148-973] -->
 <h2><a name="using_cvs" id="using_cvs">Using CVS</a></h2>
 <div class="level2">
 
 <p>
 
-Check out files from Mozilla <acronym title="Concurrent Versions System">CVS</acronym>.  If you don't want to checkout all files do:
+Firefox versions before 3.1 and Thunderbird versions before 3.0 still has its source in <acronym title="Concurrent Versions System">CVS</acronym>. Check out files from the Mozilla repository. If you don't want to checkout all files do:
 
 </p>
 <pre class="code">make -f client.mk l10n-checkout</pre>
 
 <p>
 
-The English files are in the mozilla/ module, while the translated files all reside in the l10n/ module.  They have different structure but not enough to kill you.
+The English files are in the <code>mozilla/</code> module, while the translated files all reside in the <code>l10n/</code> module.  They have different structure but not enough to kill you.
 </p>
 
 <p>
-Once you have checked out mozilla/ you will need to get the correct files for en-US.  To do this we will create en-US as a pseudo language.
+Once you have checked out <code>mozilla/</code> you will need to get the correct files for en-US.  To do this we will create en-US as a pseudo language.
 
 </p>
 <pre class="code">make -f tools/l10n/l10n.mk create-en-US</pre>
 
 <p>
 
-This will move the correct en-US files to l10n/en-US.  You can now create <acronym title="Gettext Portable Object Template">POT</acronym> files as follows:
+This will move the correct en-US files to <code>l10n/en-US</code>.  You can now create <acronym title="Gettext Portable Object Template">POT</acronym> files as follows:
 
 </p>
 <pre class="code">moz2po -P l10n/en-US l10n/pot</pre>
 
 <p>
 
-This will create the <acronym title="Gettext Portable Object Template">POT</acronym> files in l10n/pot using the American English files from en-US.  You now have a set of <acronym title="Gettext Portable Object Template">POT</acronym> files 
+This will create the <acronym title="Gettext Portable Object Template">POT</acronym> files in <code>l10n/pot</code> using the American English files from <code>en-US</code>.  You now have a set of <acronym title="Gettext Portable Object Template">POT</acronym> files 
 that you can use for translation or updating your existing <acronym title="Gettext Portable Object">PO</acronym> files.
 </p>
 
 </div>
-<!-- SECTION "Using CVS" [120-928] -->
+<!-- SECTION "Using CVS" [974-1910] -->
 <h2><a name="using_an_en-us_xpi_file" id="using_an_en-us_xpi_file">Using an en-US XPI file</a></h2>
 <div class="level2">
 
 <p>
 
 Download an <acronym title="Cross Platform Installer">XPI</acronym> file and run the following:
+
 </p>
-<pre class="code bash"><pre class="code bash">moz2po -P en-US.xpi pot</pre></pre>
+<pre class="code">moz2po -P en-US.xpi pot</pre>
+
 <p>
-You now have a set of <acronym title="Gettext Portable Object Template">POT</acronym> files in <em>pot</em>.
+
+You now have a set of <acronym title="Gettext Portable Object Template">POT</acronym> files in <code>pot</code>.
 
 </p>
 
 </div>
-<!-- SECTION "Using an en-US XPI file" [929-] --></body>
+<!-- SECTION "Using an en-US XPI file" [1911-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-developers.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-developers.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-developers.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-developers.html Mon Dec 29 16:04:35 2008
@@ -99,10 +99,16 @@
 </li>
 <li class="level1"><div class="li"> tools -- all <acronym title="Gettext Portable Object">PO</acronym> manipulation programs: <a href="toolkit-pocount.html" class="wikilink1" title="toolkit-pocount.html">pocount</a>, <a href="toolkit-pogrep.html" class="wikilink1" title="toolkit-pogrep.html">pogrep</a>, etc</div>
 </li>
-</ul>
-
-</div>
-<!-- SECTION "Source code map" [1592-2199] -->
+<li class="level1"><div class="li"> lang -- modules with data / tweaks for various languages</div>
+</li>
+<li class="level1"><div class="li"> search -- translation memory, terminology matching, and indexing / searching</div>
+</li>
+<li class="level1"><div class="li"> share -- data files</div>
+</li>
+</ul>
+
+</div>
+<!-- SECTION "Source code map" [1592-2364] -->
 <h2><a name="current_source_state" id="current_source_state">Current source state</a></h2>
 <div class="level2">
 
@@ -116,21 +122,12 @@
 		<td class="col0 leftalign"> Development            </td><td class="col1 leftalign"> trunk                           </td>
 	</tr>
 	<tr class="row1">
-		<td class="col0 leftalign"> Current stable branch  </td><td class="col1 leftalign"> trunk (we have not needed to branch     </td>
-	</tr>
-	<tr class="row2">
-		<td class="col0"> Previous stable branch </td><td class="col1 leftalign"> wordforge-0-10-branch           </td>
-	</tr>
-	<tr class="row3">
-		<td class="col0"> Previous stable branch </td><td class="col1 leftalign"> wordforge-0-9-branch            </td>
-	</tr>
-	<tr class="row4">
-		<td class="col0"> Previous stable branch </td><td class="col1 leftalign"> translate-toolkit-0-8-branch    </td>
+		<td class="col0 leftalign"> Current stable branch  </td><td class="col1 leftalign"> Pootle-toolkit-1.2     </td>
 	</tr>
 </table>
 
 </div>
-<!-- SECTION "Current source state" [2200-2605] -->
+<!-- SECTION "Current source state" [2365-2571] -->
 <h2><a name="setup" id="setup">Setup</a></h2>
 <div class="level2">
 
@@ -155,7 +152,7 @@
 </p>
 
 </div>
-<!-- SECTION "Setup" [2606-2911] -->
+<!-- SECTION "Setup" [2572-2877] -->
 <h2><a name="general_overview_of_the_programs" id="general_overview_of_the_programs">General overview of the programs</a></h2>
 <div class="level2">
 
@@ -177,7 +174,7 @@
 </p>
 
 </div>
-<!-- SECTION "General overview of the programs" [2912-3245] -->
+<!-- SECTION "General overview of the programs" [2878-3211] -->
 <h3><a name="command_line_options" id="command_line_options">Command line options</a></h3>
 <div class="level3">
 
@@ -187,7 +184,7 @@
 </p>
 
 </div>
-<!-- SECTION "Command line options" [3246-3749] -->
+<!-- SECTION "Command line options" [3212-3715] -->
 <h2><a name="converters" id="converters">Converters</a></h2>
 <div class="level2">
 
@@ -213,7 +210,7 @@
 </p>
 
 </div>
-<!-- SECTION "Converters" [3750-5031] -->
+<!-- SECTION "Converters" [3716-4997] -->
 <h2><a name="tools" id="tools">Tools</a></h2>
 <div class="level2">
 
@@ -227,7 +224,7 @@
 </p>
 
 </div>
-<!-- SECTION "Tools" [5032-5511] -->
+<!-- SECTION "Tools" [4998-5477] -->
 <h2><a name="checks" id="checks">Checks</a></h2>
 <div class="level2">
 
@@ -271,11 +268,11 @@
 
 <p>
 
-The <a href="http://translate.sourceforge.net/doc/api/public/translate.filters-module.html" class="urlextern" title="http://translate.sourceforge.net/doc/api/public/translate.filters-module.html">API documentation</a> is a good start if you want to add a new tests.  To add a new language have a look at a language you understand amongst those already implemented.
-</p>
-
-</div>
-<!-- SECTION "Checks" [5512-6961] -->
+The <a href="http://translate.sourceforge.net/doc/api/translate.filters-module.html" class="urlextern" title="http://translate.sourceforge.net/doc/api/translate.filters-module.html">API documentation</a> is a good start if you want to add a new tests.  To add a new language have a look at a language you understand amongst those already implemented.
+</p>
+
+</div>
+<!-- SECTION "Checks" [5478-6920] -->
 <h2><a name="storage" id="storage">Storage</a></h2>
 <div class="level2">
 
@@ -322,7 +319,7 @@
 </ul>
 
 </div>
-<!-- SECTION "Storage" [6962-8355] -->
+<!-- SECTION "Storage" [6921-8314] -->
 <h3><a name="base_classes" id="base_classes">Base Classes</a></h3>
 <div class="level3">
 
@@ -349,5 +346,5 @@
 </p>
 
 </div>
-<!-- SECTION "Base Classes" [8356-] --></body>
+<!-- SECTION "Base Classes" [8315-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-formats.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-formats.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-formats.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-formats.html Mon Dec 29 16:04:35 2008
@@ -132,15 +132,21 @@
 <ul>
 <li class="level1"><div class="li"> Wordfast: glossary</div>
 </li>
-<li class="level1"><div class="li"> <a href="ftp://ftp.apple.com/developer/Tool_Chest/Localization_Tools/AppleGlot/AppleGlot_3.2_UsersGuide.pdf" class="urlextern" title="ftp://ftp.apple.com/developer/Tool_Chest/Localization_Tools/AppleGlot/AppleGlot_3.2_UsersGuide.pdf">AppleGlot</a> </div>
-<ul>
+<li class="level1"><div class="li"> Apple:</div>
+<ul>
+<li class="level2"><div class="li"> <a href="ftp://ftp.apple.com/developer/Tool_Chest/Localization_Tools/AppleGlot/AppleGlot_3.2_UsersGuide.pdf" class="urlextern" title="ftp://ftp.apple.com/developer/Tool_Chest/Localization_Tools/AppleGlot/AppleGlot_3.2_UsersGuide.pdf">AppleGlot</a> </div>
+</li>
 <li class="level2"><div class="li"> MacOS .strings file localization - Bug <a href="http://bugs.locamotion.org/show_bug.cgi?id=371" class="interwiki iw_bug" title="http://bugs.locamotion.org/show_bug.cgi?id=371">371</a> relates to this.</div>
 </li>
 </ul>
 </li>
-<li class="level1"><div class="li"> Adobe FrameMaker's Maker Interchange Format - <a href="http://help.adobe.com/en_US/FrameMaker/8.0/mif_reference.pdf" class="urlextern" title="http://help.adobe.com/en_US/FrameMaker/8.0/mif_reference.pdf">MIF</a> (See also <a href="http://lino.sourceforge.net/src/100.html" class="urlextern" title="http://lino.sourceforge.net/src/100.html">python-gendoc</a>, and <a href="http://search.cpan.org/~rst/FrameMaker-MifTree-0.075/lib/FrameMaker/MifTree.pm" class="urlextern" title="http://search.cpan.org/~rst/FrameMaker-MifTree-0.075/lib/FrameMaker/MifTree.pm">Perl MIF module</a>)</div>
-</li>
-<li class="level1"><div class="li"> FrameMaker's <a href="http://www.adobe.com/support/downloads/detail.jsp?ftpID=137" class="urlextern" title="http://www.adobe.com/support/downloads/detail.jsp?ftpID=137">Maker Markup Language</a> (<acronym title="Mathematical Markup Language">MML</acronym>)</div>
+<li class="level1"><div class="li"> Adobe:</div>
+<ul>
+<li class="level2"><div class="li"> FrameMaker's Maker Interchange Format - <a href="http://help.adobe.com/en_US/FrameMaker/8.0/mif_reference.pdf" class="urlextern" title="http://help.adobe.com/en_US/FrameMaker/8.0/mif_reference.pdf">MIF</a> (See also <a href="http://lino.sourceforge.net/src/100.html" class="urlextern" title="http://lino.sourceforge.net/src/100.html">python-gendoc</a>, and <a href="http://search.cpan.org/~rst/FrameMaker-MifTree-0.075/lib/FrameMaker/MifTree.pm" class="urlextern" title="http://search.cpan.org/~rst/FrameMaker-MifTree-0.075/lib/FrameMaker/MifTree.pm">Perl MIF module</a>)</div>
+</li>
+<li class="level2"><div class="li"> FrameMaker's <a href="http://www.adobe.com/support/downloads/detail.jsp?ftpID=137" class="urlextern" title="http://www.adobe.com/support/downloads/detail.jsp?ftpID=137">Maker Markup Language</a> (<acronym title="Mathematical Markup Language">MML</acronym>)</div>
+</li>
+</ul>
 </li>
 <li class="level1"><div class="li"> Microsoft</div>
 <ul>
@@ -152,6 +158,8 @@
 </li>
 <li class="level2"><div class="li"> <a href="http://en.wikipedia.org/wiki/XML%20Paper%20Specification" class="interwiki iw_wp" title="http://en.wikipedia.org/wiki/XML%20Paper%20Specification">XML Paper Specification</a></div>
 </li>
+<li class="level2"><div class="li"> .NET Resource files (.resx) - Bug <a href="http://bugs.locamotion.org/show_bug.cgi?id=396" class="interwiki iw_bug" title="http://bugs.locamotion.org/show_bug.cgi?id=396">396</a></div>
+</li>
 </ul>
 </li>
 <li class="level1"><div class="li"> <acronym title="Extensible Markup Language">XML</acronym> related</div>
@@ -166,8 +174,6 @@
 </li>
 <li class="level1"><div class="li"> <a href="http://en.wikipedia.org/wiki/Darwin_Information_Typing_Architecture" class="interwiki iw_wp" title="http://en.wikipedia.org/wiki/Darwin_Information_Typing_Architecture">DITA</a></div>
 </li>
-<li class="level1"><div class="li"> .NET Resource files (.resx) - Bug <a href="http://bugs.locamotion.org/show_bug.cgi?id=396" class="interwiki iw_bug" title="http://bugs.locamotion.org/show_bug.cgi?id=396">396</a></div>
-</li>
 <li class="level1"><div class="li"> <a href="http://en.wikipedia.org/wiki/PDF" class="interwiki iw_wp" title="http://en.wikipedia.org/wiki/PDF">PDF</a> (<a href="http://www.adobe.com/devnet/pdf/pdf_reference.html" class="urlextern" title="http://www.adobe.com/devnet/pdf/pdf_reference.html">spec</a>)</div>
 </li>
 <li class="level1"><div class="li"> <a href="http://en.wikipedia.org/wiki/LaTeX" class="interwiki iw_wp" title="http://en.wikipedia.org/wiki/LaTeX">LaTeX</a> - see <a href="http://plastex.sourceforge.net/plastex/index.html" class="urlextern" title="http://plastex.sourceforge.net/plastex/index.html">plasTeX</a>, a Python framework for processing LaTeX documents</div>
@@ -186,12 +192,16 @@
 </li>
 <li class="level2"><div class="li"> <a href="http://en.wikipedia.org/wiki/SubRip" class="interwiki iw_wp" title="http://en.wikipedia.org/wiki/SubRip">SubRip</a> .srt</div>
 </li>
-</ul>
-</li>
-</ul>
-
-</div>
-<!-- SECTION "Unsupported formats" [1326-3721] -->
+<li class="level2"><div class="li"> <a href="http://home.gna.org/gaupol/" class="urlextern" title="http://home.gna.org/gaupol/">Gaupol</a> an PyGTK based subtitling tool looks like a good option to get format readers.</div>
+</li>
+</ul>
+</li>
+<li class="level1"><div class="li"> Tcl: .msg files.  <a href="http://www.google.com/codesearch?hl=en&q=show:XvsRBDCljVk:M2kzUbm70Ts:D5EHICz0aaQ&sa=N&ct=rd&cs_p=http://www.scilab.org/download/4.0/scilab-4.0-src.tar.gz&cs_f=scilab-4.0/tcl/scipadsources/msg_files/AddingTranslations.txt" class="urlextern" title="http://www.google.com/codesearch?hl=en&q=show:XvsRBDCljVk:M2kzUbm70Ts:D5EHICz0aaQ&sa=N&ct=rd&cs_p=http://www.scilab.org/download/4.0/scilab-4.0-src.tar.gz&cs_f=scilab-4.0/tcl/scipadsources/msg_files/AddingTranslations.txt">Good documentation</a></div>
+</li>
+</ul>
+
+</div>
+<!-- SECTION "Unsupported formats" [1326-4136] -->
 <h2><a name="unlikely_to_be_supported" id="unlikely_to_be_supported">Unlikely to be supported</a></h2>
 <div class="level2">
 
@@ -206,5 +216,5 @@
 </ul>
 
 </div>
-<!-- SECTION "Unlikely to be supported" [3722-] --></body>
+<!-- SECTION "Unlikely to be supported" [4137-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-html2po.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-html2po.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-html2po.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-html2po.html Mon Dec 29 16:04:35 2008
@@ -124,15 +124,18 @@
 		<td class="col0 leftalign"> -wWRAP, --wrap=WRAP  </td><td class="col1 leftalign"> set number of columns to wrap html at  </td>
 	</tr>
 	<tr class="row11">
+		<td class="col0 leftalign"> --notidy             </td><td class="col1"> don't use tidy to clean up <acronym title="HyperText Markup Language">HTML</acronym>, even if installed (new in version 1.2.1) </td>
+	</tr>
+	<tr class="row12">
 		<td class="col0 leftalign"> --fuzzy              </td><td class="col1 leftalign"> use translations marked fuzzy   </td>
 	</tr>
-	<tr class="row12">
+	<tr class="row13">
 		<td class="col0 leftalign"> --nofuzzy            </td><td class="col1 leftalign"> don't use translations marked fuzzy (default)   </td>
 	</tr>
 </table>
 
 </div>
-<!-- SECTION "Usage" [90-2309] -->
+<!-- SECTION "Usage" [90-2410] -->
 <h2><a name="examples" id="examples">Examples</a></h2>
 <div class="level2">
 <pre class="code">html2po -P site pot</pre>
@@ -150,7 +153,7 @@
 </p>
 
 </div>
-<!-- SECTION "Examples" [2310-2661] -->
+<!-- SECTION "Examples" [2411-2762] -->
 <h2><a name="bugs" id="bugs">Bugs</a></h2>
 <div class="level2">
 
@@ -175,5 +178,5 @@
 </p>
 
 </div>
-<!-- SECTION "Bugs" [2662-] --></body>
+<!-- SECTION "Bugs" [2763-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-important_changes.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-important_changes.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-important_changes.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-important_changes.html Mon Dec 29 16:04:35 2008
@@ -32,8 +32,17 @@
 This section describes the changes in the (unreleased) development files. It should reflect upcoming changes in the next version of the toolkit and latest <a href="http://translate.sourceforge.net/snapshots/" class="urlextern" title="http://translate.sourceforge.net/snapshots/">beta or rc release</a>.
 </p>
 
-</div>
-<!-- SECTION "trunk" [287-528] -->
+<p>
+(none yet)
+</p>
+
+</div>
+<!-- SECTION "trunk" [287-540] -->
+<h2><a name="section" id="section">1.2</a></h2>
+<div class="level2">
+
+</div>
+<!-- SECTION "1.2" [541-557] -->
 <h3><a name="new_formats" id="new_formats">New formats</a></h3>
 <div class="level3">
 
@@ -55,7 +64,7 @@
 </p>
 
 </div>
-<!-- SECTION "New formats" [529-892] -->
+<!-- SECTION "New formats" [558-921] -->
 <h3><a name="stats_database_change" id="stats_database_change">Stats database change</a></h3>
 <div class="level3">
 
@@ -64,7 +73,7 @@
 </p>
 
 </div>
-<!-- SECTION "Stats database change" [893-1248] -->
+<!-- SECTION "Stats database change" [922-1277] -->
 <h3><a name="valid_accelerators" id="valid_accelerators">Valid accelerators</a></h3>
 <div class="level3">
 
@@ -74,7 +83,7 @@
 </p>
 
 </div>
-<!-- SECTION "Valid accelerators" [1249-1759] -->
+<!-- SECTION "Valid accelerators" [1278-1788] -->
 <h2><a name="branches" id="branches">branches</a></h2>
 <div class="level2">
 
@@ -84,7 +93,7 @@
 </p>
 
 </div>
-<!-- SECTION "branches" [1760-1936] -->
+<!-- SECTION "branches" [1789-1965] -->
 <h3><a name="toolkit-c-po" id="toolkit-c-po">toolkit-C-po</a></h3>
 <div class="level3">
 
@@ -94,12 +103,12 @@
 </p>
 
 </div>
-<!-- SECTION "toolkit-C-po" [1937-2375] -->
-<h2><a name="section" id="section">1.1.1</a></h2>
-<div class="level2">
-
-</div>
-<!-- SECTION "1.1.1" [2376-2394] -->
+<!-- SECTION "toolkit-C-po" [1966-2404] -->
+<h2><a name="section1" id="section1">1.1.1</a></h2>
+<div class="level2">
+
+</div>
+<!-- SECTION "1.1.1" [2405-2423] -->
 <h3><a name="premature_termination_of_dtd_entities" id="premature_termination_of_dtd_entities">Premature termination of DTD entities</a></h3>
 <div class="level3">
 
@@ -113,12 +122,12 @@
 </p>
 
 </div>
-<!-- SECTION "Premature termination of DTD entities" [2395-2900] -->
-<h2><a name="section1" id="section1">1.1</a></h2>
-<div class="level2">
-
-</div>
-<!-- SECTION "1.1" [2901-2918] -->
+<!-- SECTION "Premature termination of DTD entities" [2424-2929] -->
+<h2><a name="section2" id="section2">1.1</a></h2>
+<div class="level2">
+
+</div>
+<!-- SECTION "1.1" [2930-2947] -->
 <h3><a name="oo2po_help_helpcontent2_escaping_fixed" id="oo2po_help_helpcontent2_escaping_fixed">oo2po Help (helpcontent2) escaping fixed</a></h3>
 <div class="level3">
 
@@ -152,7 +161,7 @@
 </p>
 
 </div>
-<!-- SECTION "oo2po Help (helpcontent2) escaping fixed" [2919-4168] -->
+<!-- SECTION "oo2po Help (helpcontent2) escaping fixed" [2948-4197] -->
 <h3><a name="prop2po_uses_developer_comments" id="prop2po_uses_developer_comments">prop2po uses developer comments</a></h3>
 <div class="level3">
 
@@ -166,7 +175,7 @@
 </p>
 
 </div>
-<!-- SECTION "prop2po uses developer comments" [4169-4826] -->
+<!-- SECTION "prop2po uses developer comments" [4198-4855] -->
 <h3><a name="moz2po_no_longer_uses_kde_comments" id="moz2po_no_longer_uses_kde_comments">moz2po no longer uses KDE comments</a></h3>
 <div class="level3">
 
@@ -184,7 +193,7 @@
 </p>
 
 </div>
-<!-- SECTION "moz2po no longer uses KDE comments" [4827-6012] -->
+<!-- SECTION "moz2po no longer uses KDE comments" [4856-6041] -->
 <h3><a name="read_and_write_mo_files" id="read_and_write_mo_files">Read and Write MO files</a></h3>
 <div class="level3">
 
@@ -198,7 +207,7 @@
 </p>
 
 </div>
-<!-- SECTION "Read and Write MO files" [6013-6361] -->
+<!-- SECTION "Read and Write MO files" [6042-6390] -->
 <h3><a name="read_qt_.qm_files" id="read_qt_.qm_files">Read Qt .qm files</a></h3>
 <div class="level3">
 
@@ -208,12 +217,12 @@
 </p>
 
 </div>
-<!-- SECTION "Read Qt .qm files" [6362-6526] -->
-<h2><a name="section2" id="section2">1.0.1</a></h2>
-<div class="level2">
-
-</div>
-<!-- SECTION "1.0.1" [6527-6545] -->
+<!-- SECTION "Read Qt .qm files" [6391-6555] -->
+<h2><a name="section3" id="section3">1.0.1</a></h2>
+<div class="level2">
+
+</div>
+<!-- SECTION "1.0.1" [6556-6574] -->
 <h3><a name="pot2po_will_create_new_empty_po_files_if_needed" id="pot2po_will_create_new_empty_po_files_if_needed">pot2po will create new empty PO files if needed</a></h3>
 <div class="level3">
 
@@ -223,12 +232,12 @@
 </p>
 
 </div>
-<!-- SECTION "pot2po will create new empty PO files if needed" [6546-7000] -->
-<h2><a name="section3" id="section3">1.0</a></h2>
-<div class="level2">
-
-</div>
-<!-- SECTION "1.0" [7001-7017] -->
+<!-- SECTION "pot2po will create new empty PO files if needed" [6575-7029] -->
+<h2><a name="section4" id="section4">1.0</a></h2>
+<div class="level2">
+
+</div>
+<!-- SECTION "1.0" [7030-7046] -->
 <h3><a name="improved_xliff_support" id="improved_xliff_support">Improved XLIFF support</a></h3>
 <div class="level3">
 
@@ -237,7 +246,7 @@
 </p>
 
 </div>
-<!-- SECTION "Improved XLIFF support" [7018-7218] -->
+<!-- SECTION "Improved XLIFF support" [7047-7247] -->
 <h3><a name="pretty_xml_output" id="pretty_xml_output">Pretty XML output</a></h3>
 <div class="level3">
 
@@ -246,7 +255,7 @@
 </p>
 
 </div>
-<!-- SECTION "Pretty XML output" [7219-7362] -->
+<!-- SECTION "Pretty XML output" [7248-7391] -->
 <h3><a name="fuzzy_matching_in_pot2po_is_optional" id="fuzzy_matching_in_pot2po_is_optional">Fuzzy matching in pot2po is optional</a></h3>
 <div class="level3">
 
@@ -255,7 +264,7 @@
 </p>
 
 </div>
-<!-- SECTION "Fuzzy matching in pot2po is optional" [7363-7679] -->
+<!-- SECTION "Fuzzy matching in pot2po is optional" [7392-7708] -->
 <h3><a name="old_matchlevenshtein.py_can_cause_name_clash" id="old_matchlevenshtein.py_can_cause_name_clash">Old match/Levenshtein.py* can cause name clash</a></h3>
 <div class="level3">
 
@@ -264,7 +273,7 @@
 </p>
 
 </div>
-<!-- SECTION "Old match/Levenshtein.py* can cause name clash" [7680-8207] -->
+<!-- SECTION "Old match/Levenshtein.py* can cause name clash" [7709-8236] -->
 <h3><a name="po_file_layout_now_follows_gettext_more_closely" id="po_file_layout_now_follows_gettext_more_closely">PO file layout now follows Gettext more closely</a></h3>
 <div class="level3">
 
@@ -310,7 +319,7 @@
 </p>
 
 </div>
-<!-- SECTION "PO file layout now follows Gettext more closely" [8208-9870] -->
+<!-- SECTION "PO file layout now follows Gettext more closely" [8237-9899] -->
 <h3><a name="language_awareness" id="language_awareness">Language awareness</a></h3>
 <div class="level3">
 
@@ -319,7 +328,7 @@
 </p>
 
 </div>
-<!-- SECTION "Language awareness" [9871-10414] -->
+<!-- SECTION "Language awareness" [9900-10443] -->
 <h3><a name="new_pofilter_testsnewlines_and_tabs" id="new_pofilter_testsnewlines_and_tabs">New pofilter tests: newlines and tabs</a></h3>
 <div class="level3">
 
@@ -329,7 +338,7 @@
 </p>
 
 </div>
-<!-- SECTION "New pofilter tests: newlines and tabs" [10415-10709] -->
+<!-- SECTION "New pofilter tests: newlines and tabs" [10444-10738] -->
 <h3><a name="merging_can_change_fuzzy_status" id="merging_can_change_fuzzy_status">Merging can change fuzzy status</a></h3>
 <div class="level3">
 
@@ -350,7 +359,7 @@
 </p>
 
 </div>
-<!-- SECTION "Merging can change fuzzy status" [10710-11073] -->
+<!-- SECTION "Merging can change fuzzy status" [10739-11102] -->
 <h3><a name="pofilter_will_make_mozilla_accelerators_a_serious_failure" id="pofilter_will_make_mozilla_accelerators_a_serious_failure">pofilter will make Mozilla accelerators a serious failure</a></h3>
 <div class="level3">
 
@@ -360,7 +369,7 @@
 </p>
 
 </div>
-<!-- SECTION "pofilter will make Mozilla accelerators a serious failure" [11074-11426] -->
+<!-- SECTION "pofilter will make Mozilla accelerators a serious failure" [11103-11455] -->
 <h3><a name="po2prop_can_output_mozilla_or_java_style_properties" id="po2prop_can_output_mozilla_or_java_style_properties">po2prop can output Mozilla or Java style properties</a></h3>
 <div class="level3">
 
@@ -392,7 +401,7 @@
 </p>
 
 </div>
-<!-- SECTION "po2prop can output Mozilla or Java style properties" [11427-12471] -->
+<!-- SECTION "po2prop can output Mozilla or Java style properties" [11456-12500] -->
 <h3><a name="support_for_compressed_files" id="support_for_compressed_files">Support for compressed files</a></h3>
 <div class="level3">
 
@@ -401,12 +410,12 @@
 </p>
 
 </div>
-<!-- SECTION "Support for compressed files" [12472-12893] -->
-<h2><a name="section4" id="section4">0.11</a></h2>
-<div class="level2">
-
-</div>
-<!-- SECTION "0.11" [12894-12911] -->
+<!-- SECTION "Support for compressed files" [12501-12922] -->
+<h2><a name="section5" id="section5">0.11</a></h2>
+<div class="level2">
+
+</div>
+<!-- SECTION "0.11" [12923-12940] -->
 <h3><a name="po2oo_defaults_to_not_check_for_errors" id="po2oo_defaults_to_not_check_for_errors">po2oo defaults to not check for errors</a></h3>
 <div class="level3">
 
@@ -416,7 +425,7 @@
 </p>
 
 </div>
-<!-- SECTION "po2oo defaults to not check for errors" [12912-13321] -->
+<!-- SECTION "po2oo defaults to not check for errors" [12941-13350] -->
 <h3><a name="pofilter_xmltags_produces_less_false_positives" id="pofilter_xmltags_produces_less_false_positives">pofilter xmltags produces less false positives</a></h3>
 <div class="level3">
 
@@ -432,12 +441,12 @@
 </ol>
 
 </div>
-<!-- SECTION "pofilter xmltags produces less false positives" [13322-13794] -->
-<h2><a name="section5" id="section5">0.10</a></h2>
-<div class="level2">
-
-</div>
-<!-- SECTION "0.10" [13795-13812] -->
+<!-- SECTION "pofilter xmltags produces less false positives" [13351-13823] -->
+<h2><a name="section6" id="section6">0.10</a></h2>
+<div class="level2">
+
+</div>
+<!-- SECTION "0.10" [13824-13841] -->
 <h3><a name="po_to_xliff_conversion" id="po_to_xliff_conversion">PO to XLIFF conversion</a></h3>
 <div class="level3">
 
@@ -447,7 +456,7 @@
 </p>
 
 </div>
-<!-- SECTION "PO to XLIFF conversion" [13813-14069] -->
+<!-- SECTION "PO to XLIFF conversion" [13842-14098] -->
 <h3><a name="pot2po_can_replace_msgmerge" id="pot2po_can_replace_msgmerge">pot2po can replace msgmerge</a></h3>
 <div class="level3">
 
@@ -466,7 +475,7 @@
 </p>
 
 </div>
-<!-- SECTION "pot2po can replace msgmerge" [14070-14912] -->
+<!-- SECTION "pot2po can replace msgmerge" [14099-14941] -->
 <h3><a name="properties_pretty_formatting" id="properties_pretty_formatting">.properties pretty formatting</a></h3>
 <div class="level3">
 
@@ -488,12 +497,12 @@
 </p>
 
 </div>
-<!-- SECTION ".properties pretty formatting" [14913-15587] -->
-<h2><a name="section6" id="section6">0.9</a></h2>
-<div class="level2">
-
-</div>
-<!-- SECTION "0.9" [15588-15605] -->
+<!-- SECTION ".properties pretty formatting" [14942-15616] -->
+<h2><a name="section7" id="section7">0.9</a></h2>
+<div class="level2">
+
+</div>
+<!-- SECTION "0.9" [15617-15634] -->
 <h3><a name="escaping_-_dtd_files_are_no_longer_escaped" id="escaping_-_dtd_files_are_no_longer_escaped">Escaping - DTD files are no longer escaped</a></h3>
 <div class="level3">
 
@@ -530,7 +539,7 @@
 <span class="re3"># Edit file <span class="kw1">in</span> new-check <span class="kw1">in</span> your PO editor</span>
 pomerge -t new -i new-check -o new-check</pre></pre>
 </div>
-<!-- SECTION "Escaping - DTD files are no longer escaped" [15606-16860] -->
+<!-- SECTION "Escaping - DTD files are no longer escaped" [15635-16889] -->
 <h3><a name="migration_to_base_class" id="migration_to_base_class">Migration to base class</a></h3>
 <div class="level3">
 
@@ -557,7 +566,7 @@
 </p>
 
 </div>
-<!-- SECTION "Migration to base class" [16861-17975] -->
+<!-- SECTION "Migration to base class" [16890-18004] -->
 <h3><a name="duplicate_merging_in_po_files_-_merge_now_the_default" id="duplicate_merging_in_po_files_-_merge_now_the_default">Duplicate Merging in PO files - merge now the default</a></h3>
 <div class="level3">
 
@@ -579,7 +588,7 @@
 </p>
 
 </div>
-<!-- SECTION "Duplicate Merging in PO files - merge now the default" [17976-18920] -->
+<!-- SECTION "Duplicate Merging in PO files - merge now the default" [18005-18949] -->
 <h3><a name="properties_files_no_longer_use_escaped_unicode" id="properties_files_no_longer_use_escaped_unicode">.properties files no longer use escaped Unicode</a></h3>
 <div class="level3">
 
@@ -591,10 +600,10 @@
 </p>
 
 </div>
-<!-- SECTION ".properties files no longer use escaped Unicode" [18921-19544] -->
-<h2><a name="section7" id="section7">0.8</a></h2>
-<div class="level2">
-
-</div>
-<!-- SECTION "0.8" [19545-] --></body>
+<!-- SECTION ".properties files no longer use escaped Unicode" [18950-19573] -->
+<h2><a name="section8" id="section8">0.8</a></h2>
+<div class="level2">
+
+</div>
+<!-- SECTION "0.8" [19574-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-index.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-index.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-index.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-index.html Mon Dec 29 16:04:35 2008
@@ -23,25 +23,25 @@
 </p>
 
 <p>
-The toolkit can convert between various different <a href="toolkit-formats.html" class="wikilink1" title="toolkit-formats.html">translation formats</a> (such as Gettext <acronym title="Gettext Portable Object">PO</acronym> formats, <acronym title="XML Localization Interchange File Format">XLIFF</acronym>, OpenOffice.org, and Mozilla formats). This makes it possible to stay in one format across all your localisation, thus allowing you
+The Toolkit can convert between various different <a href="toolkit-formats.html" class="wikilink1" title="toolkit-formats.html">translation formats</a> (such as Gettext <acronym title="Gettext Portable Object">PO</acronym> formats, <acronym title="XML Localization Interchange File Format">XLIFF</acronym>, OpenOffice.org, and Mozilla formats). This makes it possible to stay in one format across all your localisation, thus allowing you
 to master one translation editor instead of one per project.  Of course an added benefit is that now you cannot create broken OpenOffice.org or Mozilla translation files.
 </p>
 
 <p>
-To help improve the quality of your localisation the toolkit includes tools to help check, validate, merge and extract messages from your localizations.  And of course there are many other <a href="toolkit-features.html" class="wikilink1" title="toolkit-features.html">benefits</a>.
-</p>
-
-<p>
-The toolkit has a long <a href="toolkit-history.html" class="wikilink1" title="toolkit-history.html">history</a> and is part of our project to build standards based localisation tools for Free and Open Source Software.
-</p>
-
-<p>
-These documents are maintained in the wiki at <a href="http://translate.sourceforge.net/wiki/toolkit/index" class="urlextern" title="http://translate.sourceforge.net/wiki/toolkit/index">http://translate.sourceforge.net/wiki/toolkit/index</a>
+To help improve the quality of your localisation, the Toolkit includes tools to help check, validate, merge and extract messages from your localizations.  And of course there are many other <a href="toolkit-features.html" class="wikilink1" title="toolkit-features.html">benefits</a>.
+</p>
+
+<p>
+The Toolkit has a long <a href="toolkit-history.html" class="wikilink1" title="toolkit-history.html">history</a> and is part of our project to build standards based localisation tools for Free and Open Source Software. At this stage the Translate Toolkit <acronym title="Application Programming Interface">API</acronym> already forms the technological basis of the translation tools built by ourselves and several other projects. If you want to use the Toolkit to build translation tools, you might be interested in the <a href="http://translate.sourceforge.net/doc/api" class="urlextern" title="http://translate.sourceforge.net/doc/api">API documentation for the Translate Toolkit</a>.
+</p>
+
+<p>
+This documentation is maintained in the wiki at <a href="http://translate.sourceforge.net/wiki/toolkit/index" class="urlextern" title="http://translate.sourceforge.net/wiki/toolkit/index">http://translate.sourceforge.net/wiki/toolkit/index</a> .
 If you want the latest version or want to make changes, please consult the wiki.
 </p>
 
 </div>
-<!-- SECTION "The Translate Toolkit" [1-1237] -->
+<!-- SECTION "The Translate Toolkit" [1-1572] -->
 <h1><a name="quick_start" id="quick_start">Quick Start</a></h1>
 <div class="level1">
 <ul>
@@ -64,7 +64,7 @@
 </ul>
 
 </div>
-<!-- SECTION "Quick Start" [1238-1441] -->
+<!-- SECTION "Quick Start" [1573-1776] -->
 <h1><a name="use_cases" id="use_cases">Use Cases</a></h1>
 <div class="level1">
 <ul>
@@ -93,7 +93,7 @@
 </ul>
 
 </div>
-<!-- SECTION "Use Cases" [1442-2282] -->
+<!-- SECTION "Use Cases" [1777-2617] -->
 <h1><a name="converters" id="converters">Converters</a></h1>
 <div class="level1">
 
@@ -117,6 +117,8 @@
 </li>
 <li class="level1"><div class="li"> <a href="toolkit-ini2po.html" class="wikilink1" title="toolkit-ini2po.html">ini2po</a> - Windows INI file converter (v1.1.1)</div>
 </li>
+<li class="level1"><div class="li"> <a href="toolkit-odf2xliff.html" class="wikilink1" title="toolkit-odf2xliff.html">odf2xliff</a> - Convert OpenDocument (ODF) documents to <acronym title="XML Localization Interchange File Format">XLIFF</acronym> and vice-versa.</div>
+</li>
 <li class="level1"><div class="li"> <a href="toolkit-php2po.html" class="wikilink1" title="toolkit-php2po.html">php2po</a> - <acronym title="Hypertext Preprocessor">PHP</acronym> localisable string arrays converter.</div>
 </li>
 <li class="level1"><div class="li"> <a href="toolkit-po2wordfast.html" class="wikilink1" title="toolkit-po2wordfast.html">po2wordfast</a> - Wordfast Translation Memory converter</div>
@@ -148,7 +150,7 @@
 </ul>
 
 </div>
-<!-- SECTION "Converters" [2283-3738] -->
+<!-- SECTION "Converters" [2618-4155] -->
 <h1><a name="tools" id="tools">Tools</a></h1>
 <div class="level1">
 
@@ -158,7 +160,7 @@
 </p>
 
 </div>
-<!-- SECTION "Tools" [3739-3821] -->
+<!-- SECTION "Tools" [4156-4238] -->
 <h3><a name="quality_assurance" id="quality_assurance">Quality Assurance</a></h3>
 <div class="level3">
 
@@ -180,7 +182,7 @@
 </ul>
 
 </div>
-<!-- SECTION "Quality Assurance" [3822-4323] -->
+<!-- SECTION "Quality Assurance" [4239-4740] -->
 <h3><a name="other_tools" id="other_tools">Other tools</a></h3>
 <div class="level3">
 <ul>
@@ -203,7 +205,7 @@
 </ul>
 
 </div>
-<!-- SECTION "Other tools" [4324-5159] -->
+<!-- SECTION "Other tools" [4741-5576] -->
 <h1><a name="scripts" id="scripts">Scripts</a></h1>
 <div class="level1">
 
@@ -237,5 +239,5 @@
 </ul>
 
 </div>
-<!-- SECTION "Scripts" [5160-] --></body>
+<!-- SECTION "Scripts" [5577-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-mo.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-mo.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-mo.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-mo.html Mon Dec 29 16:04:35 2008
@@ -32,17 +32,11 @@
 The toolkit can create .mo files from <acronym title="Gettext Portable Object">PO</acronym> or <acronym title="XML Localization Interchange File Format">XLIFF</acronym> files, handling plurals and msgctxt.  It can also read .mo files, allowing counting, etc and also allowing the .mo files to act as a translation memory.
 </p>
 
-</div>
-<!-- SECTION "Conformance" [309-537] -->
-<h3><a name="no_hash_table" id="no_hash_table">No hash table</a></h3>
-<div class="level3">
-
 <p>
-
-The hash table is not implemented (the Gettext .mo file works fine without it).  This might result in slower performance although the Gettext manual raises doubts about the speed gain.  The hash is platform dependent.  Bug <a href="http://bugs.locamotion.org/show_bug.cgi?id=326" class="interwiki iw_bug" title="http://bugs.locamotion.org/show_bug.cgi?id=326">326</a> is tracking implementation of hashing.
+Since version 1.2 of the Translate Toolkit, the hash table is also generated (the Gettext .mo file works fine without it). Due to slight differences in the construction of the hashing, the generated files are not identical to those generated by msgfmt, but they should be functionally equivalent and 100% usable. Bug <a href="http://bugs.locamotion.org/show_bug.cgi?id=326" class="interwiki iw_bug" title="http://bugs.locamotion.org/show_bug.cgi?id=326">326</a> tracked the implementation of the hashing. The hash is platform dependent.
 
 </p>
 
 </div>
-<!-- SECTION "No hash table" [538-] --></body>
+<!-- SECTION "Conformance" [309-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-moz-l10n-builder.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-moz-l10n-builder.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-moz-l10n-builder.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-moz-l10n-builder.html Mon Dec 29 16:04:35 2008
@@ -26,8 +26,17 @@
 Please also check the page on <a href="http://developer.mozilla.org/en/docs/Creating_a_Language_Pack" class="urlextern" title="http://developer.mozilla.org/en/docs/Creating_a_Language_Pack">creating a language pack</a> on the Mozilla wiki, to stay abreast of the latest Mozilla way of doing things.
 </p>
 
+<p>
+<p><div class="noteclassic">This page is only applicable to Mozilla products with its source hosted in <acronym title="Concurrent Versions System">CVS</acronym>. This includes Firefox versions before 3.1 and Thunderbird versions before 3.0.
+</p>
+
+<p>
+For information about working with the new source trees in Mercurial, see the <a href="toolkit-mozilla_l10n_scripts.html" class="wikilink1" title="toolkit-mozilla_l10n_scripts.html">Mozilla l10n scripts</a> page.
+</div></p>
+</p>
+
 </div>
-<!-- SECTION "moz-l10n-builder" [1-420] -->
+<!-- SECTION "moz-l10n-builder" [1-703] -->
 <h2><a name="prerequisites" id="prerequisites">Prerequisites</a></h2>
 <div class="level2">
 <ul>
@@ -55,7 +64,23 @@
 </li>
 </ul>
 </li>
+<li class="level1"><div class="li"> Directory structure under the directory you want to run moz-l10n-builder in:</div>
+</li>
 </ul>
+<table class="inline">
+	<tr class="row0">
+		<td class="col0"> l10n/ </td><td class="col1"> Contains Mozilla l10n files for available/needed language(s) </td>
+	</tr>
+	<tr class="row1">
+		<td class="col0"> mozilla/ </td><td class="col1"> The Mozilla source tree </td>
+	</tr>
+	<tr class="row2">
+		<td class="col0"> po/ </td><td class="col1"> Contains your <acronym title="Gettext Portable Object">PO</acronym> files (output from moz2po) </td>
+	</tr>
+	<tr class="row3">
+		<td class="col0"> potpacks/ </td><td class="col1"> Where <acronym title="Gettext Portable Object Template">POT</acronym>-archives go </td>
+	</tr>
+</table>
 
 <p>
 
@@ -63,18 +88,18 @@
 </p>
 
 </div>
-<!-- SECTION "Prerequisites" [421-1622] -->
+<!-- SECTION "Prerequisites" [704-2191] -->
 <h2><a name="latest_version" id="latest_version">Latest Version</a></h2>
 <div class="level2">
 
 <p>
 
-moz-l10n-builer is not currently distributed as part of the toolkit.  You can get the <a href="http://translate.svn.sourceforge.net/viewvc/*checkout*/translate/src/trunk/tools/moz-l10n-builder" class="urlextern" title="http://translate.svn.sourceforge.net/viewvc/*checkout*/translate/src/trunk/tools/moz-l10n-builder">latest version from Subversion</a>
- and you will also need this <a href="http://translate.svn.sourceforge.net/viewvc/*checkout*/translate/src/trunk/tools/mozilla-l10n.patch" class="urlextern" title="http://translate.svn.sourceforge.net/viewvc/*checkout*/translate/src/trunk/tools/mozilla-l10n.patch">minor patch</a> to the mozilla source code.
+moz-l10n-builer is not currently distributed as part of the toolkit.  You can get the <a href="https://translate.svn.sourceforge.net/svnroot/translate/src/trunk/tools/mozilla/moz-l10n-builder" class="urlextern" title="https://translate.svn.sourceforge.net/svnroot/translate/src/trunk/tools/mozilla/moz-l10n-builder">latest version from Subversion</a>
+ and you will also need this <a href="http://translate.svn.sourceforge.net/viewvc/*checkout*/translate/src/trunk/tools/mozilla/mozilla-l10n.patch" class="urlextern" title="http://translate.svn.sourceforge.net/viewvc/*checkout*/translate/src/trunk/tools/mozilla/mozilla-l10n.patch">minor patch</a> to the mozilla source code.
 </p>
 
 </div>
-<!-- SECTION "Latest Version" [1623-2043] -->
+<!-- SECTION "Latest Version" [2192-2619] -->
 <h2><a name="usage" id="usage">Usage</a></h2>
 <div class="level2">
 <pre class="code">moz-l10n-builder [language-code|ALL]</pre>
@@ -96,7 +121,7 @@
 </p>
 
 </div>
-<!-- SECTION "Usage" [2044-2263] -->
+<!-- SECTION "Usage" [2620-2839] -->
 <h2><a name="operation" id="operation">Operation</a></h2>
 <div class="level2">
 
@@ -123,7 +148,7 @@
 </ul>
 
 </div>
-<!-- SECTION "Operation" [2264-2689] -->
+<!-- SECTION "Operation" [2840-3265] -->
 <h2><a name="bugs" id="bugs">Bugs</a></h2>
 <div class="level2">
 
@@ -134,5 +159,5 @@
 </p>
 
 </div>
-<!-- SECTION "Bugs" [2690-] --></body>
+<!-- SECTION "Bugs" [3266-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-moz2po.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-moz2po.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-moz2po.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-moz2po.html Mon Dec 29 16:04:35 2008
@@ -25,11 +25,16 @@
 </p>
 
 <p>
-Caution: The conversion to and from <acronym title="Cross Platform Installer">XPI</acronym> files is no longer actively supported, please work directly against Mozilla <acronym title="Concurrent Versions System">CVS</acronym> files.
-</p>
-
-</div>
-<!-- SECTION "moz2po and po2moz" [1-517] -->
+<p><div class="noteclassic">This page should only be used as a reference to the command-line options for moz2po and po2moz. For more about using the Translate Toolkit and <acronym title="Gettext Portable Object">PO</acronym> files for translating Mozilla products, please see the page on <a href="toolkit-mozilla_l10n_scripts.html" class="wikilink1" title="toolkit-mozilla_l10n_scripts.html">Mozilla l10n scripts</a>.
+</div></p>
+</p>
+
+<p>
+<strong>Caution</strong>: The conversion to and from <acronym title="Cross Platform Installer">XPI</acronym> files is no longer actively supported, please work directly against Mozilla <acronym title="Concurrent Versions System">CVS</acronym> files.
+</p>
+
+</div>
+<!-- SECTION "moz2po and po2moz" [1-770] -->
 <h2><a name="usage" id="usage">Usage</a></h2>
 <div class="level2">
 <pre class="code">moz2po [options] <xpi|dir> <po>
@@ -130,44 +135,51 @@
 </table>
 
 </div>
-<!-- SECTION "Usage" [518-3166] -->
+<!-- SECTION "Usage" [771-3419] -->
 <h2><a name="examples" id="examples">Examples</a></h2>
 <div class="level2">
 
 </div>
-<!-- SECTION "Examples" [3167-3188] -->
+<!-- SECTION "Examples" [3420-3441] -->
 <h3><a name="creating_pot_files" id="creating_pot_files">Creating POT files</a></h3>
 <div class="level3">
-<pre class="code">cd mozilla
-make -f tools/l10n/l10n.mk create-en-US
-cd ..
-moz2po -P l10n/en-US pot</pre>
-
-<p>
-
-First extract the correct en-US source files from Mozilla <acronym title="Concurrent Versions System">CVS</acronym>, found in the <em>mozilla</em> directory, placing them in <em>l10n/en-US</em>.  Then create a set of <acronym title="Gettext Portable Object Template">POT</acronym> (<em>-P</em>) files in <em>pot</em>.
+
+<p>
+
+See <a href="toolkit-creating_mozilla_pot_files.html" class="wikilink1" title="toolkit-creating_mozilla_pot_files.html">this page</a> for more information on creating Mozilla <acronym title="Gettext Portable Object Template">POT</acronym> files.
+</p>
+
+<p>
+After extracting the en-US l10n files, you can run the following command:
+
+</p>
+<pre class="code">moz2po -P l10n/en-US pot</pre>
+
+<p>
+
+This creates a set of <acronym title="Gettext Portable Object Template">POT</acronym> (<code>-P</code>) files in the <code>pot</code> directory from the Mozilla files in <code>l10n/en-US</code>.
 
 </p>
 <pre class="code">moz2po -P en-US.xpi pot</pre>
 
 <p>
 
-Creating set of <acronym title="Gettext Portable Object Template">POT</acronym> (<em>-P</em>) files from the American English <acronym title="Cross Platform Installer">XPI</acronym>, <em>en-US.xpi</em> and placing them in <em>pot</em> for use a <acronym title="Gettext Portable Object">PO</acronym> Templates.
-</p>
-
-<p>
-If you want to create a set of <acronym title="Gettext Portable Object Template">POT</acronym> files with another base language try:
+Creating set of <acronym title="Gettext Portable Object Template">POT</acronym> (<code>-P</code>) files from the American English <acronym title="Cross Platform Installer">XPI</acronym> (<code>en-US.xpi</code>) and placing them in <code>pot</code> for use as <acronym title="Gettext Portable Object">PO</acronym> Templates.
+</p>
+
+<p>
+If you want to create a set of <acronym title="Gettext Portable Object Template">POT</acronym> files with another base language try the following:
 
 </p>
 <pre class="code">moz2po -P fr-FR.xpi fr-pot</pre>
 
 <p>
 
-This will create a set of <acronym title="Gettext Portable Object Template">POT</acronym> files in <em>fr-pot</em> that have French as your source language.
-</p>
-
-</div>
-<!-- SECTION "Creating POT files" [3189-3853] -->
+This will create a set of <acronym title="Gettext Portable Object Template">POT</acronym> files in <code>fr-pot</code> that have French as your source language.
+</p>
+
+</div>
+<!-- SECTION "Creating POT files" [3442-4156] -->
 <h3><a name="creating_po_files_from_existing_non-po_translations" id="creating_po_files_from_existing_non-po_translations">Creating PO files from existing non-PO translations</a></h3>
 <div class="level3">
 
@@ -180,51 +192,36 @@
 
 <p>
 
-This will combine the untranslated template en-US files from <em>en-US</em> combine them with your existing translations in <em>af-ZA</em> and output <acronym title="Gettext Portable Object">PO</acronym> files to <em>af-ZA_pofiles</em>.
-</p>
-
-<p>
-The following is a more detailed recipe for Mozilla translation against <acronym title="Concurrent Versions System">CVS</acronym>:
-
-</p>
-<pre class="code">cd mozilla
-make -f tools/l10n/l10n.mk create-en-US
-cd ..
-moz2po -t l10n/en-US l10n/xh po/xh</pre>
-
-<p>
-
-This is against Mozilla <acronym title="Concurrent Versions System">CVS</acronym>.  First create your en-US reference files. Then using moz2po take the template en-US files in <em>l10n/en-US</em> and merge them with translations in <em>l10n/xh</em> placing the <acronym title="Gettext Portable Object">PO</acronym> files in <em>po/xh</em>.  The text from <em>en-US</em> will appear in the msgid and the text from <em>xh</em> will appear in the msgstr.  Run <a href="toolkit-pocount.html" class="wikilink1" title="toolkit-pocount.html">pocount</a> to determine how much work you need to to to bring your translations up to fully translated.
+This will combine the untranslated template en-US files from <code>en-US</code> combine them with your existing translations in <code>af-ZA</code> and output <acronym title="Gettext Portable Object">PO</acronym> files to <code>af-ZA_pofiles</code>.
 
 </p>
 <pre class="code">moz2po -t l10n/fr l10n/xh po/xh</pre>
 
 <p>
 
-For those who are not English fluent you can do the same with another languages.  In this case msgid will contain the French text from <em>l10n/fr</em>.  This is useful for translating where the translators other languages is not English but French, Spanish or Portuguese.  Please make sure that the source languages i.e. the msgid language is fully translated as against en-US.
-</p>
-
-</div>
-<!-- SECTION "Creating PO files from existing non-PO translations" [3854-5337] -->
+For those who are not English fluent you can do the same with another languages.  In this case <code>msgid</code> will contain the French text from <code>l10n/fr</code>.  This is useful for translating where the translators other languages is not English but French, Spanish or Portuguese.  Please make sure that the source languages i.e. the <code>msgid</code> language is fully translated as against en-US.
+</p>
+
+</div>
+<!-- SECTION "Creating PO files from existing non-PO translations" [4157-5036] -->
 <h3><a name="creating_an_xpi_or_cvs_ready_translations" id="creating_an_xpi_or_cvs_ready_translations">Creating an XPI or CVS ready translations</a></h3>
 <div class="level3">
 <pre class="code">po2moz -lzu-ZA -t en-US.xpi zu zu-ZA.xpi</pre>
 
 <p>
 
-Create a Zulu language (<em>-lzu-ZA</em>) <acronym title="Cross Platform Installer">XPI</acronym> called <em>zu-ZA.xpi</em> from translations found in <em>zu</em> using <em>en-US.xpi</em> as a template.  We use a template to ensure that our <acronym title="Document Type Definition">DTD</acronym> and .properties files appear exactly as those in en-US
+Create a Zulu language (<code>-lzu-ZA</code>) <acronym title="Cross Platform Installer">XPI</acronym> called <code>zu-ZA.xpi</code> from translations found in <code>zu</code> using <code>en-US.xpi</code> as a template.  We use a template to ensure that our <acronym title="Document Type Definition">DTD</acronym> and .properties files appear exactly as those in en-US
 
 </p>
 <pre class="code">po2moz -t l10n/en-US po/xh l10n/xh</pre>
 
 <p>
 
-Create Mozilla files using the templates files in <em>l10n/en-US</em> (see above for how to create them) with <acronym title="Gettext Portable Object">PO</acronym> translations in <em>po/xh</em> and ouput then
-to <em>l10n/xh</em>.  The files now in <em>l10n/xh</em> are ready for submission to Mozilla and can be used to build a language pack or translated version of Mozilla.
-</p>
-
-</div>
-<!-- SECTION "Creating an XPI or CVS ready translations" [5338-6010] -->
+Create Mozilla files using the templates files in <code>l10n/en-US</code> (see above for how to create them) with <acronym title="Gettext Portable Object">PO</acronym> translations in <code>po/xh</code> and ouput them to <code>l10n/xh</code>.  The files now in <code>l10n/xh</code> are ready for submission to Mozilla and can be used to build a language pack or translated version of Mozilla.
+</p>
+
+</div>
+<!-- SECTION "Creating an XPI or CVS ready translations" [5037-5709] -->
 <h2><a name="issues" id="issues">Issues</a></h2>
 <div class="level2">
 
@@ -238,13 +235,11 @@
 </p>
 
 <p>
-Bug <a href="http://bugs.locamotion.org/show_bug.cgi?id=129" class="interwiki iw_bug" title="http://bugs.locamotion.org/show_bug.cgi?id=129">129</a> tracks the outstanding features 
-which would allow complete localisation of Mozilla including; all help, start pages, rdf files, etc.
-It also tracks some bugs.
-</p>
-
-<p>
-Accesskeys don't yet work in .properties files and in several cases where the Mozilla dtd files don't follow the normal conventions, for example in security/manager/chrome/pippki/pref-ssl.dtd.po. You might also want to check the files mentioned in this bug <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=329444" class="interwiki iw_mozbug" title="https://bugzilla.mozilla.org/show_bug.cgi?id=329444">329444</a> where mistakes in the <acronym title="Document Type Definition">DTD</acronym>-definitions cause problems in the matching of accelerators with the text.
+Bug <a href="http://bugs.locamotion.org/show_bug.cgi?id=129" class="interwiki iw_bug" title="http://bugs.locamotion.org/show_bug.cgi?id=129">129</a> tracks the outstanding features which would allow complete localisation of Mozilla including; all help, start pages, rdf files, etc. It also tracks some bugs.
+</p>
+
+<p>
+Accesskeys don't yet work in .properties files and in several cases where the Mozilla .dtd files don't follow the normal conventions, for example in <code>security/manager/chrome/pippki/pref-ssl.dtd.po</code>. You might also want to check the files mentioned in this bug <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=329444" class="interwiki iw_mozbug" title="https://bugzilla.mozilla.org/show_bug.cgi?id=329444">329444</a> where mistakes in the <acronym title="Document Type Definition">DTD</acronym>-definitions cause problems in the matching of accelerators with the text.
 </p>
 
 <p>
@@ -263,13 +258,13 @@
 </p>
 
 <p>
-There are some constructed strings in the Mozilla code which we can't do much about. Take good care to read the localisation notes. For an example, see mail/chrome/messenger/downloadheaders.dtd.po. In that specific file, the localisation note from the <acronym title="Document Type Definition">DTD</acronym> file is lost, so take good care of those.
-</p>
-
-<p>
-The file extension of the original Mozilla file is required to tell the Toolkit how to do the conversion.  Therefore, a file like foo.dtd must be named foo.dtd.po in order to po2moz to recognise it as a <acronym title="Document Type Definition">DTD</acronym> file.
-</p>
-
-</div>
-<!-- SECTION "Issues" [6011-] --></body>
+There are some constructed strings in the Mozilla code which we can't do much about. Take good care to read the localisation notes. For an example, see <code>mail/chrome/messenger/downloadheaders.dtd.po</code>. In that specific file, the localisation note from the <acronym title="Document Type Definition">DTD</acronym> file is lost, so take good care of those.
+</p>
+
+<p>
+The file extension of the original Mozilla file is required to tell the Toolkit how to do the conversion.  Therefore, a file like foo.dtd must be named foo.dtd.po in order to <code>po2moz</code> to recognise it as a <acronym title="Document Type Definition">DTD</acronym> file.
+</p>
+
+</div>
+<!-- SECTION "Issues" [5710-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-php2po.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-php2po.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-php2po.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-php2po.html Mon Dec 29 16:04:35 2008
@@ -135,11 +135,43 @@
 
 </div>
 <!-- SECTION "Usage" [111-2295] -->
+<h2><a name="formats_supported" id="formats_supported">Formats Supported</a></h2>
+<div class="level2">
+
+<p>
+
+<acronym title="Hypertext Preprocessor">PHP</acronym> files need to be organized into separate languages per file and in the following format:
+
+</p>
+<pre class="code">$variable = 'string';</pre>
+
+<p>
+
+If $variable is an array it should be declared with the square bracket syntax.  For example, <code>$lang['var']</code>.
+</p>
+
+</div>
+<!-- SECTION "Formats Supported" [2296-2557] -->
+<h3><a name="unsupported" id="unsupported">Unsupported</a></h3>
+<div class="level3">
+
+<p>
+
+The converter does not support arrays in the form:
+</p>
+<pre class="code php"><span class="re1">$variable</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">(</span>
+   name <span class="sy0">=></span> <span class="st0">'value'</span><span class="sy0">,</span>
+<span class="br0">)</span></pre>
+<p>
+Gettext notations is also not supported, use the Gettext tools for those files.
+</p>
+
+</div>
+<!-- SECTION "Unsupported" [2558-2774] -->
 <h2><a name="examples" id="examples">Examples</a></h2>
 <div class="level2">
 
 <p>
-
 This example looks at roundtrip of <acronym title="Hypertext Preprocessor">PHP</acronym> translations as well as recovery of existing translations.
 </p>
 
@@ -185,15 +217,16 @@
 </p>
 
 </div>
-<!-- SECTION "Examples" [2296-3639] -->
+<!-- SECTION "Examples" [2775-4117] -->
 <h2><a name="issues" id="issues">Issues</a></h2>
 <div class="level2">
-
-<p>
-
-None known
-</p>
-
-</div>
-<!-- SECTION "Issues" [3640-] --></body>
+<ul>
+<li class="level1"><div class="li"> Support localisation variables using <code>array</code> is missing</div>
+</li>
+<li class="level1"><div class="li"> Proper escaping of single vs double quotes is missing. See <a href="http://bugs.locamotion.org/show_bug.cgi?id=593" class="interwiki iw_bug" title="http://bugs.locamotion.org/show_bug.cgi?id=593">593</a></div>
+</li>
+</ul>
+
+</div>
+<!-- SECTION "Issues" [4118-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-po2tmx.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-po2tmx.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-po2tmx.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-po2tmx.html Mon Dec 29 16:04:35 2008
@@ -95,8 +95,13 @@
 
 </div>
 <!-- SECTION "Examples" [1201-1372] -->
-<h2><a name="bugs" id="bugs">Bugs</a></h2>
+<h2><a name="bugs_and_issues" id="bugs_and_issues">Bugs and issues</a></h2>
 <div class="level2">
+
+</div>
+<!-- SECTION "Bugs and issues" [1373-1401] -->
+<h3><a name="markup_stripping" id="markup_stripping">Markup stripping</a></h3>
+<div class="level3">
 
 <p>
 
@@ -108,12 +113,30 @@
 </p>
 
 </div>
-<!-- SECTION "Bugs" [1373-1554] -->
+<!-- SECTION "Markup stripping" [1402-1593] -->
+<h3><a name="tmx_and_po_in_omegat" id="tmx_and_po_in_omegat">TMX and PO in OmegaT</a></h3>
+<div class="level3">
+
+<p>
+
+In some tools, like OmegaT, <acronym title="Gettext Portable Object">PO</acronym> files are parsed without expanding escaped sequences, even though such tools use <acronym title="Translation Memory eXchange">TMX</acronym> for translation memory.  Keep this in mind when using po2tmx, because po2tmx converts \n and \t to newlines and tabs in the <acronym title="Translation Memory eXchange">TMX</acronym> file.  If such a <acronym title="Translation Memory eXchange">TMX</acronym> file is used while translating <acronym title="Gettext Portable Object">PO</acronym> files in OmegaT, matching will be less than 100%.
+</p>
+
+<p>
+In other tools, such as Swordfish, the <acronym title="Gettext Portable Object">PO</acronym> comment “no-wrap” is interpreted in the same way as the equivalent function in <acronym title="Extensible Markup Language">XML</acronym>, which may also lead to mismatches if TMXes from po2tmx are used.
+</p>
+
+<p>
+There is nothing wrong with po2tmx, but if used in conjunction with tools that handle <acronym title="Gettext Portable Object">PO</acronym> files differently, it may lead to less than perfect matching.
+</p>
+
+</div>
+<!-- SECTION "TMX and PO in OmegaT" [1594-2319] -->
 <h2><a name="tips" id="tips">Tips</a></h2>
 <div class="level2">
 
 </div>
-<!-- SECTION "Tips" [1555-1572] -->
+<!-- SECTION "Tips" [2320-2337] -->
 <h3><a name="tmx_with_only_unique_segments" id="tmx_with_only_unique_segments">TMX with only unique segments</a></h3>
 <div class="level3">
 
@@ -139,7 +162,7 @@
 </p>
 
 </div>
-<!-- SECTION "TMX with only unique segments" [1573-2154] -->
+<!-- SECTION "TMX with only unique segments" [2338-2919] -->
 <h2><a name="the_toolkit_s_tmx_versus_other_tools" id="the_toolkit_s_tmx_versus_other_tools">The Toolkit's TMX versus other tools</a></h2>
 <div class="level2">
 
@@ -150,5 +173,5 @@
 </p>
 
 </div>
-<!-- SECTION "The Toolkit's TMX versus other tools" [2155-] --></body>
+<!-- SECTION "The Toolkit's TMX versus other tools" [2920-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-podebug.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-podebug.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-podebug.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-podebug.html Mon Dec 29 16:04:35 2008
@@ -19,8 +19,11 @@
 
 <p>
 
-Marks <acronym title="Gettext Portable Object">PO</acronym> messages so that it is easy to reference and locate strings when your
-translated application is running.
+Insert <a href="http://en.wikipedia.org/wiki/pseudo-translation" class="interwiki iw_wp" title="http://en.wikipedia.org/wiki/pseudo-translation">pseudo-translations</a> (also called <a href="http://en.wikipedia.org/wiki/pseudolocalization" class="interwiki iw_wp" title="http://en.wikipedia.org/wiki/pseudolocalization">pseudolocalization</a>) or debug markers into target text in <acronym title="XML Localization Interchange File Format">XLIFF</acronym>, Gettex <acronym title="Gettext Portable Object">PO</acronym> and other localization files.
+</p>
+
+<p>
+The pseudo translation or debig markers make it easy to reference and locate strings when your translated application is running.
 </p>
 
 <p>
@@ -31,10 +34,14 @@
 </li>
 <li class="level1"><div class="li"> Debug translations: if you know in what file the message occurs then you can quickly find it and fix it.</div>
 </li>
+<li class="level1"><div class="li"> Check that everything is translatable: any English only text needs to be analysed so that it can be localised.</div>
+</li>
+<li class="level1"><div class="li"> Check for Unicode compliance: by inserting Unicode text outside of the Latin range it allows you to check that your program can handle non-Latin correctly.</div>
+</li>
 </ul>
 
 </div>
-<!-- SECTION "podebug" [1-370] -->
+<!-- SECTION "podebug" [1-839] -->
 <h2><a name="usage" id="usage">Usage</a></h2>
 <div class="level2">
 <pre class="code">podebug [options] [-f format] <in> <out></pre>
@@ -48,10 +55,10 @@
 		<td class="col0 leftalign"> -f     </td><td class="col1 leftalign"> is an optional format strings.  The default format is ”[%s]”  </td>
 	</tr>
 	<tr class="row1">
-		<td class="col0 leftalign"> <in>   </td><td class="col1 leftalign"> is an input directory or <acronym title="Gettext Portable Object">PO</acronym> file  </td>
+		<td class="col0 leftalign"> <in>   </td><td class="col1 leftalign"> is an input directory or localisation file file  </td>
 	</tr>
 	<tr class="row2">
-		<td class="col0 leftalign"> <out>  </td><td class="col1 leftalign"> is an output directory or <acronym title="Gettext Portable Object">PO</acronym> files, if missing output will be to standard out.   </td>
+		<td class="col0 leftalign"> <out>  </td><td class="col1 leftalign"> is an output directory or localisation file, if missing output will be to standard out.   </td>
 	</tr>
 </table>
 
@@ -106,7 +113,7 @@
 </table>
 
 </div>
-<!-- SECTION "Usage" [371-1802] -->
+<!-- SECTION "Usage" [840-2295] -->
 <h2><a name="formats" id="formats">Formats</a></h2>
 <div class="level2">
 
@@ -162,7 +169,7 @@
 </p>
 
 </div>
-<!-- SECTION "Formats" [1803-2780] -->
+<!-- SECTION "Formats" [2296-3273] -->
 <h2><a name="rewriting_style" id="rewriting_style">Rewriting (style)</a></h2>
 <div class="level2">
 
@@ -176,7 +183,7 @@
 </p>
 
 </div>
-<!-- SECTION "Rewriting (style)" [2781-3420] -->
+<!-- SECTION "Rewriting (style)" [3274-3913] -->
 <h2><a name="ignoring_messages" id="ignoring_messages">Ignoring messages</a></h2>
 <div class="level2">
 
@@ -194,7 +201,7 @@
 </p>
 
 </div>
-<!-- SECTION "Ignoring messages" [3421-3975] -->
+<!-- SECTION "Ignoring messages" [3914-4468] -->
 <h2><a name="hashing" id="hashing">Hashing</a></h2>
 <div class="level2">
 
@@ -207,7 +214,7 @@
 </p>
 
 </div>
-<!-- SECTION "Hashing" [3976-4466] -->
+<!-- SECTION "Hashing" [4469-4959] -->
 <h2><a name="bugs" id="bugs">Bugs</a></h2>
 <div class="level2">
 
@@ -218,5 +225,5 @@
 </p>
 
 </div>
-<!-- SECTION "Bugs" [4467-] --></body>
+<!-- SECTION "Bugs" [4960-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-poen.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-poen.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-poen.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-poen.html Mon Dec 29 16:04:35 2008
@@ -19,6 +19,21 @@
 
 <p>
 
+<p><div class="notewarning">
+poen has been removed from Translate Toolkit > 1.2.  Rather use <a href="toolkit-podebug.html" class="wikilink1" title="toolkit-podebug.html">podebug</a> as follows:
+
+</p>
+<pre class="code">
+podebug --rewrite=en -f "" pot/ po/
+</pre>
+
+<p>
+
+
+</div></p>
+</p>
+
+<p>
 Initialises a directory English <acronym title="Gettext Portable Object">PO</acronym> files by taking <acronym title="Gettext Portable Object Template">POT</acronym> files and copying the msgid to the msgstr.  
 </p>
 
@@ -27,7 +42,7 @@
 </p>
 
 </div>
-<!-- SECTION "poen" [1-295] -->
+<!-- SECTION "poen" [1-458] -->
 <h2><a name="prerequisites" id="prerequisites">Prerequisites</a></h2>
 <div class="level2">
 
@@ -37,7 +52,7 @@
 </p>
 
 </div>
-<!-- SECTION "Prerequisites" [296-338] -->
+<!-- SECTION "Prerequisites" [459-501] -->
 <h2><a name="usage" id="usage">Usage</a></h2>
 <div class="level2">
 <pre class="code">poen [options] <pot> <en></pre>
@@ -70,7 +85,7 @@
 </table>
 
 </div>
-<!-- SECTION "Usage" [339-698] -->
+<!-- SECTION "Usage" [502-861] -->
 <h2><a name="bugs" id="bugs">Bugs</a></h2>
 <div class="level2">
 
@@ -81,5 +96,5 @@
 </p>
 
 </div>
-<!-- SECTION "Bugs" [699-] --></body>
+<!-- SECTION "Bugs" [862-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-posegment.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-posegment.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-posegment.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-posegment.html Mon Dec 29 16:04:35 2008
@@ -26,8 +26,12 @@
 This is useful for the creation of a file that can be used as a Translation Memory (e.g. when using <a href="pootle-updatetm.html" class="wikilink1" title="pootle-updatetm.html">updatetm</a> to create translation memory for Pootle) as you should get better matching after you have exposed translated sentences that might occur elsewhere in your work.
 </p>
 
+<p>
+Posegment won't do very advanced sentence boundary detection and alignment, but has customisations for the punctuation rules of several languages (Amharic, Afrikaans, Arabic, Armenian, Chinese, Greek, Japanese, Khmer, Oriya, Persian). For the purpose of increasing your TM (as described below), it is already very useful. Give it a try and help us to improve it even more for your language.
+</p>
+
 </div>
-<!-- SECTION "posegment" [1-443] -->
+<!-- SECTION "posegment" [1-834] -->
 <h2><a name="usage" id="usage">Usage</a></h2>
 <div class="level2">
 <pre class="code">posegment [options] <input> <segmented></pre>
@@ -92,7 +96,7 @@
 </table>
 
 </div>
-<!-- SECTION "Usage" [444-1580] -->
+<!-- SECTION "Usage" [835-1971] -->
 <h2><a name="examples" id="examples">Examples</a></h2>
 <div class="level2">
 
@@ -120,7 +124,7 @@
 </p>
 
 </div>
-<!-- SECTION "Examples" [1581-2164] -->
+<!-- SECTION "Examples" [1972-2555] -->
 <h2><a name="issues" id="issues">Issues</a></h2>
 <div class="level2">
 <ul>
@@ -133,5 +137,5 @@
 </ul>
 
 </div>
-<!-- SECTION "Issues" [2165-] --></body>
+<!-- SECTION "Issues" [2556-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/doc/user/toolkit-poterminology.html
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/doc/user/toolkit-poterminology.html?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/doc/user/toolkit-poterminology.html (original)
+++ translate-toolkit/trunk/translate/doc/user/toolkit-poterminology.html Mon Dec 29 16:04:35 2008
@@ -37,10 +37,11 @@
 <p>
 <p><div class="noteclassic">New in v1.2
 </div></p>
-</p>
-
-</div>
-<!-- SECTION "poterminology" [1-759] -->
+
+</p>
+
+</div>
+<!-- SECTION "poterminology" [1-756] -->
 <h2><a name="usage" id="usage">Usage</a></h2>
 <div class="level2">
 <pre class="code">poterminology [options] <input> <terminology></pre>
@@ -94,7 +95,7 @@
 		<td class="col0 leftalign"> <a href="toolkit-psyco_mode.html" class="wikilink1" title="toolkit-psyco_mode.html">--psyco=MODE</a>         </td><td class="col1 leftalign"> use psyco to speed up the operation, modes: none, full, profile  </td>
 	</tr>
 	<tr class="row10">
-		<td class="col0 leftalign"> -S STOPFILE, --stopword-list=STOPFILE  </td><td class="col1"> read stopword (term exclusion) list from STOPFILE (default site-packages/translate/share/stoplist-en) </td>
+		<td class="col0 leftalign"> -S STOPFILE, --stopword-list=STOPFILE  </td><td class="col1 leftalign"> read stopword (term exclusion) list from STOPFILE (default site-packages/translate/share/stoplist-en)  </td>
 	</tr>
 	<tr class="row11">
 		<td class="col0 leftalign"> -F, --fold-titlecase  </td><td class="col1 leftalign"> fold “Title Case” to lowercase (default)  </td>
@@ -106,7 +107,7 @@
 		<td class="col0 leftalign"> -I, --ignore-case     </td><td class="col1 leftalign"> make all terms lowercase  </td>
 	</tr>
 	<tr class="row14">
-		<td class="col0"> --accelerator=ACCELERATORS </td><td class="col1 leftalign"> ignores the given accelerator characters when matching  </td>
+		<td class="col0"> --accelerator=ACCELERATORS </td><td class="col1 leftalign"> ignores the given accelerator characters when matching (accelerator characters probably require quoting)  </td>
 	</tr>
 	<tr class="row15">
 		<td class="col0 leftalign"> -t LENGTH, --term-words=LENGTH  </td><td class="col1 leftalign"> generate terms of up to LENGTH words (default 3)  </td>
@@ -121,7 +122,7 @@
 		<td class="col0 leftalign"> --substr-needed=MIN   </td><td class="col1 leftalign"> omit substring-only terms appearing in less than MIN different messages (default 2)  </td>
 	</tr>
 	<tr class="row19">
-		<td class="col0 leftalign"> --locs-needed=MIN     </td><td class="col1 leftalign"> omit terms appearing in less than MIN different original source files (default 2)  </td>
+		<td class="col0 leftalign"> --locs-needed=MIN     </td><td class="col1 leftalign"> omit terms appearing in less than MIN different original program locations (default 2)  </td>
 	</tr>
 	<tr class="row20">
 		<td class="col0 leftalign"> --sort=ORDER          </td><td class="col1 leftalign"> output sort order(s): frequency, dictionary, length (default is all orders in the above priority)  </td>
@@ -135,7 +136,7 @@
 </table>
 
 </div>
-<!-- SECTION "Usage" [760-2982] -->
+<!-- SECTION "Usage" [757-3035] -->
 <h2><a name="examples" id="examples">Examples</a></h2>
 <div class="level2">
 
@@ -159,7 +160,8 @@
 Generating a terminology file containing automatically extracted translations is possible as well, by using <acronym title="Gettext Portable Object">PO</acronym> files with translations for the input files:
 
 </p>
-<pre class="code">poterminology Pootle/po/pootle/fi/*.po --output fi/pootle-terminology.po --sort dictionary</pre>
+<pre class="code">poterminology Pootle/po/pootle/fi/*.po --output fi/pootle-terminology.po \
+  --sort dictionary</pre>
 
 <p>
 
@@ -187,7 +189,7 @@
   Pootle/po/pootle/es/*.po Pootle/po/terminology/es/gnome/es.po</pre>
 
 </div>
-<!-- SECTION "Examples" [2983-5331] -->
+<!-- SECTION "Examples" [3036-5390] -->
 <h3><a name="reduced_terminology_glossaries" id="reduced_terminology_glossaries">Reduced terminology glossaries</a></h3>
 <div class="level3">
 
@@ -220,10 +222,11 @@
 
 <p>
 However, in the first example above (generating terminology for Pootle itself), the term “not exist” passes the stoplist and threshold filters, but all occurrences of this term also contained the term “does not exist” which also passes the stoplist and threshold filters.  Given this duplication, the shorter phrase is eliminated in favor of the longer one, resulting in 23 terms (out of 25 that pass the threshold filters).
-</p>
-
-</div>
-<!-- SECTION "Reduced terminology glossaries" [5332-7299] -->
+
+</p>
+
+</div>
+<!-- SECTION "Reduced terminology glossaries" [5391-7357] -->
 <h2><a name="reducing_output_terminology_with_thresholding_options" id="reducing_output_terminology_with_thresholding_options">Reducing output terminology with thresholding options</a></h2>
 <div class="level2">
 
@@ -265,7 +268,7 @@
 </p>
 
 <p>
-Not all <acronym title="Gettext Portable Object">PO</acronym>/<acronym title="Gettext Portable Object Template">POT</acronym> files contain proper location comments.  If your input files don't have (good) location comments and the output terminology file is reduced to zero or very few entries by thresholding, you may need to override the default value for this threshold and set it to 1, which disables this check.
+Not all <acronym title="Gettext Portable Object">PO</acronym>/<acronym title="Gettext Portable Object Template">POT</acronym> files contain proper location comments.  If your input files don't have (good) location comments and the output terminology file is reduced to zero or very few entries by thresholding, you may need to override the default value for this threshold and set it to 0, which disables this check.
 </p>
 
 <p>
@@ -291,7 +294,7 @@
 </p>
 
 </div>
-<!-- SECTION "Reducing output terminology with thresholding options" [7300-10589] -->
+<!-- SECTION "Reducing output terminology with thresholding options" [7358-10647] -->
 <h2><a name="stop_word_files" id="stop_word_files">Stop word files</a></h2>
 <div class="level2">
 
@@ -325,15 +328,20 @@
 
 <p>
 Note that if you are using multiple stopword list files, as in the above, they will all be subject to the same case mapping (fold “Title Case” to lower case by default) - if you specify a different case mapping in the second file it will override the mapping for all the stopword list files.
-</p>
-
-</div>
-<!-- SECTION "Stop word files" [10590-12147] -->
+
+</p>
+
+</div>
+<!-- SECTION "Stop word files" [10648-12203] -->
 <h2><a name="issues" id="issues">Issues</a></h2>
 <div class="level2">
 
 <p>
 
+When using poterminology on Windows systems, file globbing for input is not supported (unless you have a version of Python built with cygwin, which is not common).  On Windows, a command like “poterminology -o test.po podir/*.po” will fail with an error “No such file or directory: 'podir\\*.po'” instead of expanding the podir/*.po glob expression.  (This problem affects all Translate Toolkit command-line tools, not just poterminology.)  You can work around this problem by making sure that the directory does not contain any files (or subdirectories) that you do not want to use for input, and just giving the directory name as the argument, e.g. “poterminology -o test.po podir” for the case above.
+</p>
+
+<p>
 When using terminology files generated by poterminology as input, a plethora of translator comments marked with (poterminology) may be generated, with the number of these increasing on each iteration.  You may wish to run <a href="toolkit-pocommentclean.html" class="wikilink1" title="toolkit-pocommentclean.html">pocommentclean</a> (or a slightly modified version of it which only removes (poterminology) comments) on the input and/or output files, especially since translator comments are displayed as tooltips by Pootle (thankfully, they are truncated at a few dozen characters).
 </p>
 
@@ -342,6 +350,14 @@
 </p>
 
 <p>
+Default threshold settings may eliminate all output terms; in this case, poterminology should suggest threshold option settings that would allow output to be generated (this enhancement is tracked as “bug” <a href="http://bugs.locamotion.org/show_bug.cgi?id=582" class="interwiki iw_bug" title="http://bugs.locamotion.org/show_bug.cgi?id=582">582</a>).
+</p>
+
+<p>
+While poterminology ignores <acronym title="Extensible Markup Language">XML</acronym>/<acronym title="HyperText Markup Language">HTML</acronym> entities and elements and %-style format strings (for C and Python), it does not ignore all types of “variables” that may occur, particularly in OpenOffice.org, Mozilla, or Gnome localization files.  These other types should be ignored as well (this enhancement is tracked as “bug” <a href="http://bugs.locamotion.org/show_bug.cgi?id=598" class="interwiki iw_bug" title="http://bugs.locamotion.org/show_bug.cgi?id=598">598</a>).
+</p>
+
+<p>
 Terms containing only words that are ignored individually, but not excluded from phrases (e.g. “you are you”) may be generated by poterminology, but aren't generally useful.  Adding a new threshold option --nonstop-needed could allow these to be suppressed.
 </p>
 
@@ -355,8 +371,9 @@
 
 <p>
 A single execution of poterminology can only perform automatic translation extraction for a single target language - having the ability to handle all target languages in one run would allow a single command to generate all terminology for an entire project.  Additionally, this could provide even more information for identifying variant terms by comparing the number of target languages that have variant translations.
-</p>
-
-</div>
-<!-- SECTION "Issues" [12148-] --></body>
+
+</p>
+
+</div>
+<!-- SECTION "Issues" [12204-] --></body>
 </html>

Modified: translate-toolkit/trunk/translate/storage/base.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/storage/base.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/storage/base.py (original)
+++ translate-toolkit/trunk/translate/storage/base.py Mon Dec 29 16:04:35 2008
@@ -31,6 +31,9 @@
 except:
     import pickle
 from exceptions import NotImplementedError
+from translate.storage.placeables.base import Placeable, as_string
+from translate.misc.typecheck import accepts, Self, IsOneOf
+from translate.misc.multistring import multistring
 
 def force_override(method, baseclass):
     """Forces derived classes to override method."""
@@ -314,6 +317,47 @@
             newunit.addnote(notes)
         return newunit
     buildfromunit = classmethod(buildfromunit)
+
+    def _rich_to_multistring(cls, value):
+        """Convert a placeables representation to a multistring.
+        >>> rich_string = [['a', X('42'), 'b'], ['foo', G('7', ['bar'])]]
+        >>> TranslationUnit._rich_to_multistring(rich_string)
+        multistring('a*b', 'foobar')
+        """
+        return multistring([as_string(chunk_seq) for chunk_seq in value])
+    _rich_to_multistring = classmethod(_rich_to_multistring)
+
+    def _multistring_to_rich(cls, value):
+        """Convert a multistring or unicode to a placeables presentation.
+        >>> TranslationUnit._multistring_to_rich(multistring('a', 'b'))
+        [['a'], ['b']]
+        """
+        if isinstance(value, (unicode, str)):
+            return [[unicode(value)]]
+        else:
+            return [[string] for string in value.strings]
+    _multistring_to_rich = classmethod(_multistring_to_rich)
+
+    @accepts(Self(), [[IsOneOf(Placeable, unicode)]])
+    def _set_rich_source(self, value):
+        self.source = self._rich_to_multistring(value)
+
+    def _get_rich_source(self):
+        return self._multistring_to_rich(self.source)
+
+    rich_source = property(_get_rich_source, _set_rich_source)
+
+    @accepts(Self(), [[IsOneOf(Placeable, unicode)]])
+    def _set_rich_target(self, value):
+        self.target = self._rich_to_multistring(value)
+
+    def _get_rich_target(self):
+        return self._multistring_to_rich(self.target)
+
+    rich_target = property(_get_rich_target, _set_rich_target)
+
+    xid = property(lambda self: None, lambda self, value: None)
+    rid = property(lambda self: None, lambda self, value: None)
 
 class TranslationStore(object):
     """Base class for stores for multiple translation units of type UnitClass."""

Modified: translate-toolkit/trunk/translate/storage/dtd.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/storage/dtd.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/storage/dtd.py (original)
+++ translate-toolkit/trunk/translate/storage/dtd.py Mon Dec 29 16:04:35 2008
@@ -138,6 +138,12 @@
                     else:
                         # plain comment
                         self.commenttype = "comment"
+                #FIXME: bloody entity might share a line with something important
+                elif not self.inentity and re.search("%.*;", line):
+                    # now work out the type of comment, and save it (remember we're not in the comment yet)
+                    self.comments.append(("comment", line))
+                    line = ""
+                    continue
 
             if self.incomment:
                 # some kind of comment

Modified: translate-toolkit/trunk/translate/storage/lisa.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/storage/lisa.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/storage/lisa.py (original)
+++ translate-toolkit/trunk/translate/storage/lisa.py Mon Dec 29 16:04:35 2008
@@ -25,6 +25,7 @@
 import re
 
 from translate.storage import base
+from translate.storage.placeables import lisa
 from translate.lang import data
 try:
     from lxml import etree
@@ -136,18 +137,70 @@
         """
         return namespaced(self.namespace, name)
 
+    def set_source_dom(self, dom_node):
+        languageNodes = self.getlanguageNodes()
+        if len(languageNodes) > 0:
+            self.xmlelement[0] = dom_node
+        else:
+            self.xmlelement.append(dom_node)
+    
+    def get_source_dom(self):
+        return self.getlanguageNode(lang=None, index=0)
+    source_dom = property(get_source_dom, set_source_dom)
+
+    def _ensure_singular(cls, value):
+        if value is not None and len(value) > 1:
+            raise Exception("XLIFF cannot handle plurals by default")
+    _ensure_singular = classmethod(_ensure_singular)
+
+    def set_rich_source(self, value, sourcelang='en'):
+        self._ensure_singular(value)
+        sourcelanguageNode = self.createlanguageNode(sourcelang, u'', "source")        
+        self.source_dom = lisa.insert_into_dom(sourcelanguageNode, value[0])
+
+    def get_rich_source(self):
+        return [lisa.extract_chunks(self.source_dom)]
+    rich_source = property(get_rich_source, set_rich_source)
+
     def setsource(self, text, sourcelang='en'):
         text = data.forceunicode(text)
+        self.source_dom = self.createlanguageNode(sourcelang, text, "source")
+
+    def getsource(self):
+        return self.getNodeText(self.source_dom)
+    source = property(getsource, setsource)
+
+    def set_target_dom(self, dom_node, append=False):
         languageNodes = self.getlanguageNodes()
-        sourcelanguageNode = self.createlanguageNode(sourcelang, text, "source")
-        if len(languageNodes) > 0:
-            self.xmlelement[0] = sourcelanguageNode
+        assert len(languageNodes) > 0
+        if dom_node is not None:
+            if append or len(languageNodes) == 1:
+                self.xmlelement.append(dom_node)
+            else:
+                self.xmlelement.insert(1, dom_node)
+        if not append and len(languageNodes) > 1:
+            self.xmlelement.remove(languageNodes[1])
+
+    def get_target_dom(self, lang=None):
+        if lang:
+            return self.getlanguageNode(lang=lang)
         else:
-            self.xmlelement.append(sourcelanguageNode)
-
-    def getsource(self):
-        return self.getNodeText(self.getlanguageNode(lang=None, index=0))
-    source = property(getsource, setsource)
+            return self.getlanguageNode(lang=None, index=1)
+    target_dom = property(get_target_dom)
+
+    def set_rich_target(self, value, lang='xx', append=False):
+        self._ensure_singular(value)
+        languageNode = None
+        if not value is None:
+            languageNode = self.createlanguageNode(lang, u'', "target")
+            lisa.insert_into_dom(languageNode, value[0])
+        self.set_target_dom(languageNode, append)
+
+    def get_rich_target(self, lang=None):
+        """retrieves the "target" text (second entry), or the entry in the 
+        specified language, if it exists"""
+        return [lisa.extract_chunks(self.get_target_dom(lang))]
+    rich_target = property(get_rich_target, set_rich_target)
 
     def settarget(self, text, lang='xx', append=False):
         #XXX: we really need the language - can't really be optional
@@ -156,25 +209,15 @@
         #Firstly deal with reinitialising to None or setting to identical string
         if self.gettarget() == text:
             return
-        languageNodes = self.getlanguageNodes()
-        assert len(languageNodes) > 0
+        languageNode = None
         if not text is None:
             languageNode = self.createlanguageNode(lang, text, "target")
-            if append or len(languageNodes) == 1:
-                self.xmlelement.append(languageNode)
-            else:
-                self.xmlelement.insert(1, languageNode)
-        if not append and len(languageNodes) > 1:
-            self.xmlelement.remove(languageNodes[1])
+        self.set_target_dom(languageNode, append)
 
     def gettarget(self, lang=None):
         """retrieves the "target" text (second entry), or the entry in the 
         specified language, if it exists"""
-        if lang:
-            node = self.getlanguageNode(lang=lang)
-        else:
-            node = self.getlanguageNode(lang=None, index=1)
-        return self.getNodeText(node)
+        return self.getNodeText(self.get_target_dom(lang))
     target = property(gettarget, settarget)
 
     def createlanguageNode(self, lang, text, purpose=None):
@@ -246,6 +289,15 @@
     def __str__(self):
         return etree.tostring(self.xmlelement, pretty_print=True, encoding='utf-8')
 
+    def _set_property(self, name, value):
+        self.xmlelement.attrib[name] = value
+
+    xid = property(lambda self:        self.xmlelement.attrib[self.namespaced('xid')],
+                   lambda self, value: self._set_property(self.namespaced('xid'), value))
+
+    rid = property(lambda self:        self.xmlelement.attrib[self.namespaced('rid')],
+                   lambda self, value: self._set_property(self.namespaced('rid'), value))
+
     def createfromxmlElement(cls, element):
         term = cls(None, empty=True)
         term.xmlelement = element

Modified: translate-toolkit/trunk/translate/storage/mo.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/storage/mo.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/storage/mo.py (original)
+++ translate-toolkit/trunk/translate/storage/mo.py Mon Dec 29 16:04:35 2008
@@ -174,7 +174,8 @@
                 target = unit.target
             if unit.target:
                 MESSAGES[source.encode("utf-8")] = target
-        hash_table = array.array("L", [0] * hash_size)
+        # using "I" works for 32- and 64-bit systems, but not for 16-bit!
+        hash_table = array.array("I", [0] * hash_size)
         keys = MESSAGES.keys()
         # the keys are sorted in the .mo file
         keys.sort()

Modified: translate-toolkit/trunk/translate/storage/statsdb.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/storage/statsdb.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/storage/statsdb.py (original)
+++ translate-toolkit/trunk/translate/storage/statsdb.py Mon Dec 29 16:04:35 2008
@@ -105,7 +105,28 @@
         return result
 
     def as_string_for_db(self):
-      return ",".join([repr(x) for x in self.to_tuple()])
+        return ",".join([repr(x) for x in self.to_tuple()])
+
+def transaction(f):
+    """Modifies f to commit database changes if it executes without exceptions.
+    Otherwise it rolls back the database.
+    
+    ALL publicly accessible methods in StatsCache MUST be decorated with this
+    decorator.
+    """
+    
+    def decorated_f(self, *args, **kwargs):
+        try:
+            result = f(self, *args, **kwargs)
+            self.con.commit()
+            return result
+        except:
+            # If ANY exception is raised, we're left in an
+            # uncertain state and we MUST roll back any changes to avoid getting
+            # stuck in an inconsistent state.
+            self.con.rollback()
+            raise
+    return decorated_f
 
 UNTRANSLATED, TRANSLATED, FUZZY = 0, 1, 2
 def statefordb(unit):
@@ -126,7 +147,7 @@
             'translatedtargetwords']
 
     def db_keys(self):
-      return ",".join(self.keys)
+        return ",".join(self.keys)
 
     def __init__(self, cur):
         self.cur = cur
@@ -217,6 +238,7 @@
 def suggestion_filename(filename):
     return filename + suggestion_extension()
 
+# ALL PUBLICLY ACCESSIBLE METHODS MUST BE DECORATED WITH THE transaction DECORATOR.
 class StatsCache(object):
     """An object instantiated as a singleton for each statsfile that provides
     access to the database cache from a pool of StatsCache objects."""
@@ -319,10 +341,9 @@
 
         self.cur.execute("""CREATE INDEX IF NOT EXISTS uniterrorindex
             ON uniterrors(fileid, configid);""")
-
-        self.con.commit()
-
-    def _getfileid(self, filename, check_mod_info=True, store=None, errors_return_empty=False):
+    create = transaction(create)
+
+    def _getfileid(self, filename, check_mod_info=True, store=None):
         """Attempt to find the fileid of the given file, if it hasn't been
            updated since the last record update.
 
@@ -336,27 +357,21 @@
         self.cur.execute("""SELECT fileid, st_mtime, st_size FROM files
                 WHERE path=?;""", (realpath,))
         filerow = self.cur.fetchone()
-        try:
-            mod_info = get_mod_info(realpath)
-            if filerow:
-                fileid = filerow[0]
-                if not check_mod_info:
-                    # Update the mod_info of the file
-                    self.cur.execute("""UPDATE files
-                            SET st_mtime=?, st_size=?
-                            WHERE fileid=?;""", (mod_info[0], mod_info[1], fileid))
-                    return fileid
-                if (filerow[1], filerow[2]) == mod_info:
-                    return fileid
-            # We can only ignore the mod_info if the row already exists:
-            assert check_mod_info
-            store = store or factory.getobject(realpath)
-            return self._cachestore(store, realpath, mod_info)
-        except (base.ParseError, IOError, OSError, AssertionError):
-            if errors_return_empty:
-                return -1
-            else:
-                raise
+        mod_info = get_mod_info(realpath)
+        if filerow:
+            fileid = filerow[0]
+            if not check_mod_info:
+                # Update the mod_info of the file
+                self.cur.execute("""UPDATE files
+                        SET st_mtime=?, st_size=?
+                        WHERE fileid=?;""", (mod_info[0], mod_info[1], fileid))
+                return fileid
+            if (filerow[1], filerow[2]) == mod_info:
+                return fileid
+        # We can only ignore the mod_info if the row already exists:
+        assert check_mod_info
+        store = store or factory.getobject(realpath)
+        return self._cachestore(store, realpath, mod_info)
 
     def _getstoredcheckerconfig(self, checker):
         """See if this checker configuration has been used before."""
@@ -389,7 +404,6 @@
             values (?, ?, ?, ?, ?, ?, ?, ?);""",
             unitvalues)
         self.file_totals[fileid] = file_totals_record
-        self.con.commit()
         if unitindex:
             return state_strings[statefordb(units[0])]
         return ""
@@ -411,14 +425,8 @@
     def filetotals(self, filename):
         """Retrieves the statistics for the given file if possible, otherwise
         delegates to cachestore()."""
-        fileid = None
-        if not fileid:
-            try:
-                fileid = self._getfileid(filename)
-            except ValueError, e:
-                print >> sys.stderr, str(e)
-                return {}
-        return self.file_totals[fileid]
+        return self.file_totals[self._getfileid(filename)]
+    filetotals = transaction(filetotals)
 
     def _cacheunitschecks(self, units, fileid, configid, checker, unitindex=None):
         """Helper method for cachestorechecks() and recacheunit()"""
@@ -450,10 +458,9 @@
             (unitindex, fileid, configid, name, message)
             values (?, ?, ?, ?, ?);""",
             unitvalues)
-        self.con.commit()
         return errornames
 
-    def cachestorechecks(self, fileid, store, checker, configid):
+    def _cachestorechecks(self, fileid, store, checker, configid):
         """Calculates and caches the error statistics of the given store
         unconditionally."""
         # Let's purge all previous failures because they will probably just
@@ -469,7 +476,16 @@
             FROM     units
             WHERE    fileid=? AND unitid=?
         """, (fileid, unitid))
-        return values.fetchone()
+        result = values.fetchone()
+        if result is not None:
+            return result
+        else:
+            print >> sys.stderr, """WARNING: Database in inconsistent state. 
+            fileid %d and unitid %d have no entries in the table units.""" % (fileid, unitid)
+            # If values.fetchone() is None, then we return an empty list,
+            # to make FileTotals.new_record(*self.get_unit_stats(fileid, unitid))
+            # do the right thing.
+            return []
 
     def recacheunit(self, filename, checker, unit):
         """Recalculate all information for a specific unit. This is necessary
@@ -497,6 +513,7 @@
             checker.setsuggestionstore(factory.getobject(suggestion_filename(filename), ignore=suggestion_extension()))
         state.extend(self._cacheunitschecks([unit], fileid, configid, checker, unitindex))
         return state
+    recacheunit = transaction(recacheunit)
 
     def _checkerrors(self, filename, fileid, configid, checker, store):
         def geterrors():
@@ -516,7 +533,7 @@
         store = store or factory.getobject(filename)
         if os.path.exists(suggestion_filename(filename)):
             checker.setsuggestionstore(factory.getobject(suggestion_filename(filename), ignore=suggestion_extension()))
-        self.cachestorechecks(fileid, store, checker, configid)
+        self._cachestorechecks(fileid, store, checker, configid)
         return geterrors()
 
     def _geterrors(self, filename, fileid, configid, checker, store):
@@ -538,15 +555,8 @@
     def filechecks(self, filename, checker, store=None):
         """Retrieves the error statistics for the given file if possible,
         otherwise delegates to cachestorechecks()."""
-        fileid = None
-        configid = None
-        try:
-            fileid = self._getfileid(filename, store=store)
-            configid = self._get_config_id(fileid, checker)
-        except ValueError, e:
-            print >> sys.stderr, str(e)
-            return emptyfilechecks()
-
+        fileid = self._getfileid(filename, store=store)
+        configid = self._get_config_id(fileid, checker)
         values = self._geterrors(filename, fileid, configid, checker, store)
 
         errors = emptyfilechecks()
@@ -559,6 +569,7 @@
             errors[checkkey].append(value[1])   #value[1] is the unitindex
 
         return errors
+    filechecks = transaction(filechecks)
 
     def file_fails_test(self, filename, checker, name):
         fileid = self._getfileid(filename)
@@ -570,12 +581,12 @@
             FROM uniterrors 
             WHERE fileid=? and configid=? and name=?;""", (fileid, configid, name))
         return self.cur.fetchone() is not None
+    file_fails_test = transaction(file_fails_test)
         
     def filestats(self, filename, checker, store=None):
         """Return a dictionary of property names mapping sets of unit
         indices with those properties."""
         stats = emptyfilestats()
-
         stats.update(self.filechecks(filename, checker, store))
         fileid = self._getfileid(filename, store=store)
 
@@ -591,6 +602,7 @@
             stats["total"].append(value[1])
 
         return stats
+    filestats = transaction(filestats)
 
     def unitstats(self, filename, _lang=None, store=None):
         # For now, lang and store are unused. lang will allow the user to
@@ -617,3 +629,4 @@
             stats["targetwordcount"].append(targetcount)
 
         return stats
+    unitstats = transaction(unitstats)

Modified: translate-toolkit/trunk/translate/storage/test_po.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/storage/test_po.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/storage/test_po.py (original)
+++ translate-toolkit/trunk/translate/storage/test_po.py Mon Dec 29 16:04:35 2008
@@ -5,6 +5,7 @@
 from translate.storage import test_base
 from translate.misc import wStringIO
 from translate.misc.multistring import multistring
+from translate.storage.placeables import X, G
 from py.test import raises
 
 def test_roundtrip_quoting():
@@ -130,6 +131,16 @@
         unit.source = u"Goeiemôre"
         assert not unit.isheader()
 
+#     def test_rich_source(self):
+#         unit = self.unit
+#         unit.rich_source = [['a', X('42'), 'c']]
+#         assert unit.rich_source == [[u'a\ufffcc']]
+
+#     def test_rich_target(self):
+#         unit = self.unit
+#         unit.rich_target = [['a', G('42', ['b']), 'c']]
+#         assert unit.rich_target == [['abc']]
+
 class TestPOFile(test_base.TestTranslationStore):
     StoreClass = po.pofile
     def poparse(self, posource):

Modified: translate-toolkit/trunk/translate/storage/test_xliff.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/storage/test_xliff.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/storage/test_xliff.py (original)
+++ translate-toolkit/trunk/translate/storage/test_xliff.py Mon Dec 29 16:04:35 2008
@@ -2,6 +2,7 @@
 
 from translate.storage import xliff
 from translate.storage import test_base
+from translate.storage.placeables import X, G
 
 class TestXLIFFUnit(test_base.TestTranslationUnit):
     UnitClass = xliff.xliffunit
@@ -72,6 +73,78 @@
         assert newfile.findunit("Bla").source == "Bla"
         assert newfile.findunit("dit") is None
 
+    def test_rich_source(self):
+        xlifffile = xliff.xlifffile()
+        xliffunit = xlifffile.addsourceunit(u'')
+
+        # Test 1
+        xliffunit.rich_source = [['foo', X('bar'), 'baz']]
+        source_dom_node = xliffunit.getlanguageNode(None, 0)
+        x_placeable = source_dom_node[0]
+
+        assert source_dom_node.text == 'foo'
+        
+        assert x_placeable.tag == u'x'
+        assert x_placeable.attrib['id'] == 'bar'
+        assert x_placeable.tail == 'baz'
+        
+        assert xliffunit.rich_source == [['foo', X('bar'), 'baz']]
+
+        # Test 2
+        xliffunit.rich_source = [['foo', 'baz', G('oof', [G('zab', ['bar', 'rab'])])]]
+        source_dom_node = xliffunit.getlanguageNode(None, 0)
+        g_placeable = source_dom_node[0]
+        nested_g_placeable = g_placeable[0]
+
+        assert source_dom_node.text == u'foobaz'
+        
+        assert g_placeable.tag == u'g'
+        assert g_placeable.text == u''
+        assert g_placeable.attrib[u'id'] == u'oof'
+        assert g_placeable.tail == u''
+        
+        assert nested_g_placeable.tag == u'g'
+        assert nested_g_placeable.text == u'barrab'
+        assert nested_g_placeable.attrib[u'id'] == u'zab'
+        assert nested_g_placeable.tail == u''
+        
+        rich_source = xliffunit.rich_source
+        assert rich_source == [['foobaz', G('oof', [G('zab', ['barrab'])])]]
+
+    def test_rich_target(self):
+        xlifffile = xliff.xlifffile()
+        xliffunit = xlifffile.addsourceunit(u'')
+
+        # Test 1
+        xliffunit.set_rich_target([['foo', X('bar'), 'baz']], 'fr')
+        target_dom_node = xliffunit.getlanguageNode(None, 1)
+        x_placeable = target_dom_node[0]
+        
+        assert target_dom_node.text == 'foo'
+        assert x_placeable.tag == u'x'
+        assert x_placeable.attrib['id'] == 'bar'
+        assert x_placeable.tail == 'baz'
+
+        # Test 2
+        xliffunit.set_rich_target([['foo', 'baz', G('oof', [G('zab', ['bar', 'rab'])])]], 'fr')
+        target_dom_node = xliffunit.getlanguageNode(None, 1)
+        g_placeable = target_dom_node[0]
+        nested_g_placeable = g_placeable[0]
+
+        assert target_dom_node.text == u'foobaz'
+        
+        assert g_placeable.tag == u'g'
+        assert g_placeable.text == u''
+        assert g_placeable.attrib[u'id'] == u'oof'
+        assert g_placeable.tail == u''
+        
+        assert nested_g_placeable.tag == u'g'
+        assert nested_g_placeable.text == u'barrab'
+        assert nested_g_placeable.attrib[u'id'] == u'zab'
+        assert nested_g_placeable.tail == u''
+        
+        assert xliffunit.rich_target == [['foobaz', G('oof', [G('zab', ['barrab'])])]]
+
     def test_source(self):
         xlifffile = xliff.xlifffile()
         xliffunit = xlifffile.addsourceunit("Concept")

Modified: translate-toolkit/trunk/translate/storage/xliff.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/storage/xliff.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/storage/xliff.py (original)
+++ translate-toolkit/trunk/translate/storage/xliff.py Mon Dec 29 16:04:35 2008
@@ -69,7 +69,7 @@
             nodes.extend(sources[- (sourcesl - targetsl):])
         return nodes
 
-    def addalttrans(self, txt, origin=None, lang=None):
+    def addalttrans(self, txt, origin=None, lang=None, sourcetxt=None, matchquality=None):
         """Adds an alt-trans tag and alt-trans components to the unit.
         
         @type txt: String
@@ -83,6 +83,13 @@
         alttrans = etree.SubElement(self.xmlelement, self.namespaced("alt-trans"))
         alttarget = etree.SubElement(alttrans, self.namespaced("target"))
         alttarget.text = txt
+        if sourcetxt:
+            if isinstance(sourcetxt, str):
+                sourcetxt = sourcetxt.decode("utf-8")
+            altsource = etree.SubElement(alttrans, self.namespaced("source"))
+            altsource.text = sourcetxt
+        if matchquality:
+            alttrans.set("match-quality", matchquality)
         if origin:
             alttrans.set("origin", origin)
         if lang:
@@ -294,13 +301,15 @@
         """returns the restype attribute in the trans-unit tag"""
         return self.xmlelement.get("restype")
 
-    def merge(self, otherunit, overwrite=False, comments=True):
+    def merge(self, otherunit, overwrite=False, comments=True, authoritative=False):
         #TODO: consider other attributes like "approved"
         super(xliffunit, self).merge(otherunit, overwrite, comments)
         if self.target:
             self.marktranslated()
-        if otherunit.isfuzzy():
-            self.markfuzzy()
+            if otherunit.isfuzzy():
+                self.markfuzzy()
+            elif otherunit.source == self.source:
+                self.markfuzzy(False)
 
     def correctorigin(self, node, origin):
         """Check against node tag's origin (e.g note or alt-trans)"""

Modified: translate-toolkit/trunk/translate/tools/pocount.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/tools/pocount.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/tools/pocount.py (original)
+++ translate-toolkit/trunk/translate/tools/pocount.py Mon Dec 29 16:04:35 2008
@@ -156,11 +156,13 @@
             self.totals[key] += stats[key]
 
     def handlefile(self, filename):
-        stats = calcstats(filename)
-        if stats:
+        try:
+            stats = calcstats(filename)
             self.updatetotals(stats)
             summarize(filename, stats, self.CSVstyle)
             self.filecount += 1
+        except: # This happens if we have a broken file.
+            print >> sys.stderr, sys.exc_info()[1]
 
     def handlefiles(self, dirname, filenames):
         for filename in filenames:

Modified: translate-toolkit/trunk/translate/tools/podebug.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/tools/podebug.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/tools/podebug.py (original)
+++ translate-toolkit/trunk/translate/tools/podebug.py Mon Dec 29 16:04:35 2008
@@ -26,9 +26,15 @@
 """
 
 from translate.storage import factory
+from translate.misc.rich import map_rich, only_strings
 import os
 import re
 import md5
+
+def add_prefix(prefix, strings):
+    for string in strings:
+        string.insert(0, prefix)
+    return strings
 
 class podebug:
     def __init__(self, format=None, rewritestyle=None, hash=None, ignoreoption=None):
@@ -135,16 +141,10 @@
                 hashable = unit.source
             prefix = md5.new(hashable).hexdigest()[:self.hash] + " "
         if self.rewritefunc:
-            unit.target = self.rewritefunc(unit.source)
+            unit.rich_target = map_rich(only_strings(self.rewritefunc), unit.rich_source)
         elif not unit.istranslated():
-            unit.target = unit.source
-        if unit.hasplural():
-            strings = unit.target.strings
-            for i, string in enumerate(strings):
-                strings[i] = prefix + string
-            unit.target = strings
-        else:
-            unit.target = prefix + unit.target
+            unit.rich_target = unit.rich_source
+        unit.rich_target = add_prefix(prefix, unit.rich_target)
         return unit
 
     def convertstore(self, store):

Modified: translate-toolkit/trunk/translate/tools/poterminology.py
URL: http://svn.debian.org/wsvn/translate-toolkit/trunk/translate/tools/poterminology.py?rev=1521&op=diff
==============================================================================
--- translate-toolkit/trunk/translate/tools/poterminology.py (original)
+++ translate-toolkit/trunk/translate/tools/poterminology.py Mon Dec 29 16:04:35 2008
@@ -27,6 +27,7 @@
 from translate.misc import optrecurse
 from translate.storage import po
 from translate.storage import factory
+from translate.misc import file_discovery
 import os
 import re
 import sys
@@ -358,16 +359,6 @@
             termfile.units.append(unit)
         open(options.output, "w").write(str(termfile))
 
-def find_installed_file(filename):
-    root = __file__
-    if os.path.islink(root):
-        root = os.path.realpath(root)
-    filepath = os.path.join( os.path.dirname(os.path.dirname(os.path.abspath(root))), 'share', filename )
-
-    if not os.path.exists(filepath):
-        return None
-    return filepath
-
 def fold_case_option(option, opt_str, value, parser):
     parser.values.ignorecase = False
     parser.values.foldtitle = True
@@ -422,7 +413,7 @@
     parser.stoprelist = []
     parser.stopfoldtitle = True
     parser.stopignorecase = False
-    parser.defaultstopfile = find_installed_file('stoplist-en')
+    parser.defaultstopfile = file_discovery.get_abs_data_filename('stoplist-en')
     parser.add_option("-S", "--stopword-list", type="string", metavar="STOPFILE", 
         action="callback", callback=parse_stopword_file,
         help="read stopword (term exclusion) list from STOPFILE (default %s)" % parser.defaultstopfile,




More information about the Debian-l10n-commits mailing list