[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[OpenTAL-checkins] opental/PlacelessTranslationService GettextMess...
From: |
Fernando Lalo Martins |
Subject: |
[OpenTAL-checkins] opental/PlacelessTranslationService GettextMess... |
Date: |
Tue, 05 Aug 2003 13:03:13 -0400 |
CVSROOT: /cvsroot/opental
Module name: opental
Branch:
Changes by: Fernando Lalo Martins <address@hidden> 03/08/05 13:03:13
Modified files:
PlacelessTranslationService: GettextMessageCatalog.py
PlacelessTranslationService.py
__init__.py
Log message:
allowing a catalog to declare it is usable for other language codes -
for example, a "no" potfile could declare it can be served when user requests
"no-nb" or "no-nn", or a "de-de" could declare it is usable as "de-at" in the
lack of a "de-at" specific one.
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/opental/opental/PlacelessTranslationService/GettextMessageCatalog.py.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/opental/opental/PlacelessTranslationService/PlacelessTranslationService.py.diff?tr1=1.25&tr2=1.26&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/opental/opental/PlacelessTranslationService/__init__.py.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
Patches:
Index: opental/PlacelessTranslationService/GettextMessageCatalog.py
diff -u opental/PlacelessTranslationService/GettextMessageCatalog.py:1.13
opental/PlacelessTranslationService/GettextMessageCatalog.py:1.14
--- opental/PlacelessTranslationService/GettextMessageCatalog.py:1.13 Tue Jul
29 17:31:35 2003
+++ opental/PlacelessTranslationService/GettextMessageCatalog.py Tue Aug
5 13:03:13 2003
@@ -17,7 +17,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
"""A simple implementation of a Message Catalog.
-$Id: GettextMessageCatalog.py,v 1.13 2003/07/29 21:31:35 lalo Exp $
+$Id: GettextMessageCatalog.py,v 1.14 2003/08/05 17:03:13 lalo Exp $
"""
from gettext import GNUTranslations
@@ -90,6 +90,7 @@
if self._language is None or self._domain is None:
raise ValueError, 'potfile has no metadata'
self._language = self._language.lower().replace('_', '-')
+ self._other_languages = tro._info.get('x-is-fallback-for',
'').split()
self.preferred_encodings = tro._info.get('preferred-encodings',
'').split()
self.name = unicode(tro._info.get('language-name', ''),
tro._charset)
self.default_zope_data_encoding = tro._charset
@@ -158,6 +159,11 @@
"""
"""
return self.name or self._language
+
+ def getOtherLanguages(self):
+ """
+ """
+ return self._other_languages
def getDomain(self):
"""
Index: opental/PlacelessTranslationService/PlacelessTranslationService.py
diff -u opental/PlacelessTranslationService/PlacelessTranslationService.py:1.25
opental/PlacelessTranslationService/PlacelessTranslationService.py:1.26
--- opental/PlacelessTranslationService/PlacelessTranslationService.py:1.25
Tue Aug 5 12:22:38 2003
+++ opental/PlacelessTranslationService/PlacelessTranslationService.py Tue Aug
5 13:03:13 2003
@@ -17,7 +17,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
"""Placeless Translation Service for providing I18n to file-based code.
-$Id: PlacelessTranslationService.py,v 1.25 2003/08/05 16:22:38 lalo Exp $
+$Id: PlacelessTranslationService.py,v 1.26 2003/08/05 17:03:13 lalo Exp $
"""
import sys, re, zLOG, Globals, fnmatch
@@ -73,7 +73,7 @@
icon = 'misc_/PlacelessTranslationService/PlacelessTranslationService.png'
# major, minor, patchlevel, internal
# internal is always 0 on releases; if you hack this internally, increment
it
- _class_version = (0, 5, 0, 0)
+ _class_version = (0, 5, 0, 1)
all_meta_types = ()
security = ClassSecurityInfo()
@@ -89,6 +89,7 @@
self._domain = default_domain
# _catalogs maps (language, domain) to identifiers
self._catalogs = {}
+ self._fb_catalogs = {}
# What languages to fallback to, if there is no catalog for the
# requested language (no fallback on individual messages)
if fallbacks is None:
@@ -96,18 +97,24 @@
self._fallbacks = fallbacks
def _registerMessageCatalog(self, catalog):
- key = (catalog.getLanguage(), catalog.getDomain())
- self._catalogs.setdefault(key, []).append(catalog.getIdentifier())
+ domain = catalog.getDomain()
+ self._catalogs.setdefault((catalog.getLanguage(), domain),
[]).append(catalog.getIdentifier())
+ for lang in catalog.getOtherLanguages():
+ self._fb_catalogs.setdefault((lang, domain),
[]).append(catalog.getIdentifier())
self._p_changed = 1
- def _unregisterMessageCatalog(self, catalog):
- for key, combo in self._catalogs.items():
+ def _unregister_inner(self, catalog, clist):
+ for key, combo in clist.items():
try:
combo.remove(catalog.getIdentifier())
except ValueError:
continue
if not combo: # removed the last catalog for a language/domain
combination
- del self._catalogs[key]
+ del clist[key]
+
+ def _unregisterMessageCatalog(self, catalog):
+ self._unregister_inner(catalog, self._catalogs)
+ self._unregister_inner(catalog, self._fb_catalogs)
self._p_changed = 1
def _load_dir(self, basepath):
@@ -213,7 +220,8 @@
target_language = self.negotiate_language(context, domain)
# Get the translation. Use the specified fallbacks if this fails
- catalog_names = self._catalogs.get((target_language, domain), ())
+ catalog_names = self._catalogs.get((target_language, domain), ()) or \
+ self._fb_catalogs.get((target_language, domain), ())
if not catalog_names:
for language in self._fallbacks:
catalog_names = self._catalogs.get((language, domain), ())
@@ -252,7 +260,8 @@
if context is None:
raise TypeError, 'No destination language'
else:
- langs = [m[0] for m in self._catalogs.keys() if m[1] == domain]
+ langs = [m[0] for m in self._catalogs.keys() if m[1] == domain] + \
+ [m[0] for m in self._fb_catalogs.keys() if m[1] == domain]
for fallback in self._fallbacks:
if fallback not in langs:
langs.append(fallback)
Index: opental/PlacelessTranslationService/__init__.py
diff -u opental/PlacelessTranslationService/__init__.py:1.13
opental/PlacelessTranslationService/__init__.py:1.14
--- opental/PlacelessTranslationService/__init__.py:1.13 Tue Aug 5
11:53:15 2003
+++ opental/PlacelessTranslationService/__init__.py Tue Aug 5 13:03:13 2003
@@ -16,7 +16,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
__version__ = '''
-$Id: __init__.py,v 1.13 2003/08/05 15:53:15 lalo Exp $
+$Id: __init__.py,v 1.14 2003/08/05 17:03:13 lalo Exp $
'''.strip()
from OFS.Application import get_products
@@ -73,7 +73,9 @@
make_translation_service(cp)
pkg.translation_service = getattr(cp, cp_id)
- instance_version = getattr(translation_service, '_instance_version', (0,
5, 0, 0))
+ # don't
touch - this is the last version
+ # that
didn't have the attribute (0.4)
+ instance_version = getattr(translation_service, '_instance_version', (0,
4, 0, 0))
if instance_version < PlacelessTranslationService._class_version:
log('outdated translation service found, recreating',
detail = '(found %s.%s.%s.%s)\n' % instance_version)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [OpenTAL-checkins] opental/PlacelessTranslationService GettextMess...,
Fernando Lalo Martins <=