1.3.7 - Released April 24, 2007 Don't loose quotes, see http://dev.plone.org/plone/ticket/6238#comment:3 [nouri] 1.3.6 - Released April 22, 2007 Yet another Unicode error was fixed which was caused by non unicode characters in page template source (utf encoded string in page template source). This closes http://dev.plone.org/plone/ticket/6238. [naro, hannosch] 1.3.5 - Released January 27, 2006 The recent change to return Unicode exposed another place in the TAL interpreter that combines text, which wasn't yet patched to allow a mixture of Unicode and utf-8 encoded text. A new monkey-patch has been introduced to fix this problem. This closes http://dev.plone.org/plone/ticket/6068. [hannosch] 1.3.4 - Released December 13, 2006 Changed translate method of PTS to return Unicode by default. This was needed for Plone 2.5 in order to get a sensible behaviour with the FiveTranslationService. This release is probably not compatible with Plone 2.1. [hannosch] 1.3.3 - Released September 29, 2006 Provided some more nice fallback in the interpolate function for situations where you mixed encoded strings or unicode in the mapping dict compared to the text itself. We handle utf-8 encoded strings gracefully in all cases now. [hannosch] 1.3.2 - Released September 8, 2006 Made the logging of broken message catalogs more verbose. Now both the filename and path are logged, so you actually have a chance of finding those files. Thx limi for the suggestion. [hannosch] Fixed bugs in interpolate function, where mixing of Unicode and encoded strings failed, when the Unicode string contained only ASCII characters. This will work now. Nonetheless you should update your code to use Unicode internally, as support for translating non-Unicode strings will go away once we switch to a Zope3-based TranslationService. [hannosch] 1.3.1 - Released June 1, 2006 Also apply our evil hack that allows mixing utf-8 encoded strings and Unicode to the Zope3 versions of pagetemplate and talinterpreter, so current Plone works under Zope 2.10. Note that PTS is slated for destruction and you should really start to update all your code to use Unicode internally and especially for output through TAL. [hannosch] 1.3.0 - Released May 15, 2006 Fixed another problem in the interpolate function, where variables where not replaced if the string was an old-style normal string and not unicode. This closes http://dev.plone.org/plone/ticket/5509. [hannosch] Fixed a UnicodeDecodeError bug in the interpolate function, when a mapping or the text was Unicode but the other one was not. The function excepts only Unicode as both the text and for all entries of the mapping, as it has no way to guess the encoding of any of them. [hannosch] Sanitized the interpolate function. It had various major bugs and was just unbelievable slow. This closes http://dev.plone.org/plone/ticket/5421. [hannosch] Removed OpenTal support in anticipation of having to support Zope3 zope.tal for Zope 2.10. We don't want to support three tal implementations ;) [hannosch] Big general spring cleaning. Moved to logging module instead of zLOG. The logging module is included in Python starting with 2.3. Running an older version of Python is therefore not supported anymore. This goes likewise for Zope < 2.7. [hannosch] Include the filename of the po in the missing-domain error message [wichert] 1.2.7 - Released March 19, 2006 Fixed a bug in msgfmt.py noted by Andrey Lebedev. All comments starting with '#,' where treated as fuzzy. [hannosch] Fixed a bug where the translation service would return None for a translation, when it could not find one and the default was None. Changed to use the msgid instead. This has happened for all Zope3 Messages which have no default text. [hannosch] [alecm] Added test to show that dtml translation is broken, see http://dev.plone.org/plone/ticket/4895. [hannosch] Do not reset the PTS_IS_RTL flag in a request if it is already set. http://dev.plone.org/plone/ticket/4631 [wichert] 1.2.6 - Released February 25, 2006 Removed some Python 2.1 BBB and unused code. [hannosch] Removed home-grown MessageID implementation. Using Zope 3 MessageID's is now possible with Zope 2.8 / Five 1.1 or Zope > 2.9. [hannosch] Moved changes.txt from doc subfolder to main folder and renamed it to HISTORY.txt to comply to the standard layout. [hannosch] Changed standard logging level to BLATHER instead of INFO so the startup process isn't bombarded with useless messages. [hannosch] Added a environment variable "DISABLE_PTS" to entirely disable loading of translation files and registration of PTS as a translation service without removing the product from the 'Products' directory. HINT: One easy way to set environment variables is to use the 'zope.conf' directive. [dreamcatcher] 1.2.5 - 2005-12-06 Fix problems with folder layout where INSTANCE_HOME.startswith(ZOPE_HOME) is True, as reported in http://plone.org/collector/4983. Thanks to ymahe for the patch, which I have slightly modified. [hannosch] 1.2.4 - 2005-11-16 Removed some Python 2.1 compatibility code and added first very basic test for loading po files [hannosch] Made some filesystem access code a bit more robust by additionally catching OSErrors. This fixes http://plone.org/collector/4824. [hannosch] Increased class version again and wrote test to ensure matching class version and version in version.txt [hannosch] 1.2.3 - 2005-10-17 Fixed http://plone.org/collector/4799 - upgrade from 2.1 to 2.1.1 breaks all message catalogs. We now increment the internal class version of PTS, which will result in a recreation of the translation_service object in the ZODB, so all contained internal poFile objects get removed and freshly recreated [hannosch] 1.2.2 - 2005-10-08 Replaced storing the persistent PTS at the module level in __init__.py with a PTSWrapper object. Added isRTL method to PTSWrapper. Should fix the connection issues. [alecm] merged missing fix from the 1.0 branch. It's changelog entry was: "Fixed issue with multiple ZEO clients at differen filesystem locations." This was done by longsleep on Feb 9, 2005 [hannosch] 1.2.1 - 2005-08-07 fresh tarball for Plone 2.1rc2 (without .svn directories) [batlogg] added greek translation [thx to Nikos Papagrigoriou] [hannosch] 1.2.0 - 2005-07-28 Purge mo file cache when PTS is recreated [tiran] 1.2-rc3 Fixed id generation for po files located in the "locales" directory [tiran] Added a mo file cache which is storing the compiled files in INSTANCE_HOME/var/pts/${catalog_id}.mo [tiran] 1.2-rc2 ... 1.2-rc1 - 2004-09-08 New feature RTL support and RTL api for right to left languages. Po files may contain a header called X-Is-RTL with either yes, y, true or 1 for a rtl language or no, n, false, 0 for a ltr language (default value). The product module also contains a new method isRTL which is available TTW. 1.1-rc1 - 2004-07-15 New feature msgid tracker (thanks to ingeniweb): It's tracking untranslated msgids inside the PTS. You can easily download them as po file. See ZMI for more informations Set MessageCatalog isPrincipiaFolderish to false to avoid infinite recursion of dtml-tree inside the ZMI. 1.0-rc8 This version is no longer a fork, but is the official version now. Thanks to Lalo Martins for his tireless efforts in writing the original product. Disabled usage of SESSION Re-enabled .missing logging Added documentation section, including details of how to use .missing logging to generate .pot files 1.0fork-rc7 - 2004-05-11 Reenabled getRequest patch to avoid some ugly problems 1.0fork-rc6 - 2004-05-05 Cleaned up all python files, realigend the code and removed spaces 1.0fork-rc5 - 2004-04-22 Changed logging to get use the methods and vars from utils.py Cleaned up the imports an seperate them into python, zope and PTS imports Removed the dependency and auto loading of the get_request patch. Now it's loaded only when using the MessageID module, when applying unicode to FasterStringIO (shouldn't happen!) or as fallback when PTS can't get a valid context (REQUEST). The last two cases will break the first time after a (re)start of zope. If your software depends on get_request() apply the patch manually:: from Products.PlacelessTranslationService.PatchStringIO import applyRequestPatch applyRequestPatch() NOTE: FOR THIS RELEAE THE get_request PATCH IS ENABLED BY DEFAULT! Better debugging message for PoSyntaxErrors 1.0fork-rc4 - 2004-04-05 Changed po file id creation: - id is MyProducts.i18n-pofile or MyProducts.locales-pofile for po files loaded from a product directory - id is GlobalCatalogs-pofile for po files loaded from INSTANCE_HOME/i18n/ Always append fallback catalogs to the catalogs used for translation Support INSTANCE_HOME/locales/ Move GlobalCatalogs from INSTANCE_HOME/i18n/ and INSTANCE_HOME/locales/ to the beginning of the catalogs used for translation Cache catalog names in the REQUEST using the domain and language as key 1.0fork-rc3 - 2004-03-09 Added a product identifier to the control panel catalog id to allow same po filenames in different locations: - Catalog its are now like Products.CMFPlone.i18n.plone-de.po - Catalogs not coming from a Product (eg from INSTANCE_HOME) are named like before (plone-de.po) fixed collector issue #910529 thanks to Nicolas Ledez for the report and the patch 1.0fork-rc2 - 2004-03-01 Fixed bug in FasterStringIO that added new lines to the output Added zope 3 like locales directory support: Products/MyProduct/locales/${lang}/LC_MESSAGES/${domain}.po 1.0fork-rc1 - 2004-02-11 Fixed minors problems with python 2.1 compatibility 1.0fork-beta5 - 2004-02-03 Added utranslate method Added negotiator chains and two new easy negotiators Added zope 3 like MessageID and MessageIDFactory Updated API and cleaned up code: - added security to classes - moved some classes to utils.py to avoid method level imports - added getTranslationService() method to get the PTS instance in other products 1.0fork-beta4 - 2004-01-28 Read all files with "rb" in msgfmt.py Display broken Message Catalogs in ControlPanel as "broken" Synced with these latest PTS changes from savannah: - added as_unicode argument to translate - cleaned up msgfmt.py 1.0fork-beta3 - 2004-01-07 Added a builtin mo compiler based on the msgfmt tool from the python source package. No need to compile the po files to mo files. Thanks to Christian 'Tiran' Heimes No longer load mo files on startup. Catalogs are automatically compiled. 1.0fork-beta2 - 2003-11-24 No longer register a persistent service to zope translation service registry. Instead wrap PTS with a non persistent class Added a de (German) translation for PTS ZMI Reimplemented hook to register own negotiaton method into Negotiator which was stripped out in 1.0beta1 (now works with PloneLanguageTool again) Python 2.1 compatibility 1.0beta1 - 2003-10-?? Internationalized our own page templates (for ZMI) and added a pt_BR translation Generalized the Negotiator so that it may negotiate any header in the "accept" format 1.0alpha2 - 2003-09-26 Some primitive DTML support Fixed persistence issues that were arising from having the same object stored in the ZODB and in a module-level global var (thanks to Sidnei) 1.0alpha1 - 2003-08-27 Removed dependency from PAX Now PTS looks for an "i18n" subdirectory under each Product package, which makes it easier to package/install i18n-aware products. The i18n dir on INSTANCE_HOME is still kept, you can use it for local overrides Improvements on the ZMI usability 0.5 - 2003-03-31 Now we have a ZMI (Zope Management Interface) in Zope's Control Panel. You can use it to refresh catalogs without restarting, and to test installed catalogs Some functions at module-level are exported for use in Python Scripts and Page Templates (Open or Z): negotiate(), translate(), getLanguages(), getLanguageName() Added a "hotfix" to StringIO that should make PTS work with ZPT without UnicodeError being raised constantly 0.4 - 2003-02-03 Relicensed to GPL Now it really works with ZPT (thoroughly tested) If used with OpenPT, it will use the output encoding negotiation hooks Negotiator now uses a cache (stored in the request) to speed things up Can now use multiple catalogs for the same domain (but the order in which they are checked is a bit randomic) Special thanks to Magnus Heino for the ZPT support hints and patches 0.3 - 2003-01-02 This release marked the split of PlacelessTranslationService into its own package, and the initial attempts at making it compatible with ZPT. 0.2 - 2002-09-22 Updated release 0.1 - 2002-08-24 Initial release