[Zope-Checkins] CVS: Zope3/lib/python/Zope/I18n - MessageCatalog.py:1.5 TranslationService.py:1.6
Stephan Richter
srichter@cbu.edu
Thu, 13 Jun 2002 09:13:38 -0400
Update of /cvs-repository/Zope3/lib/python/Zope/I18n
In directory cvs.zope.org:/tmp/cvs-serv22803/lib/python/Zope/I18n
Modified Files:
MessageCatalog.py TranslationService.py
Log Message:
Made another small abstraction as promised yesterday. I made a special
IEditableTranslationService interface for translation services that can be
addded somehow.
=== Zope3/lib/python/Zope/I18n/MessageCatalog.py 1.4 => 1.5 ===
self._messages[msgid] = message
+ def deleteMessage(self, msgid):
+ """Set a message to the catalog."""
+ del self._messages[msgid]
+
def getMessageIds(self):
"""Get a list of all the message ids."""
return list(self._messages.keys())
=== Zope3/lib/python/Zope/I18n/TranslationService.py 1.5 => 1.6 ===
#
##############################################################################
-"""
+"""This is the standard, placeful Translation Service for TTW development.
$Id$
"""
@@ -32,6 +32,7 @@
from Zope.I18n.Domain import Domain
from Zope.I18n.IMessageCatalog import IMessageCatalog
from Zope.I18n.ITranslationService import ITranslationService
+from Zope.I18n.IEditableTranslationService import IEditableTranslationService
from Zope.I18n.SimpleTranslationService import SimpleTranslationService
@@ -42,7 +43,7 @@
class TranslationService(BTreeContainer, SimpleTranslationService):
- __implements__ = ILocalTranslationService
+ __implements__ = ILocalTranslationService, IEditableTranslationService
def __init__(self, default_domain='global'):
super(TranslationService, self).__init__()
@@ -131,8 +132,12 @@
############################################################
+ ############################################################
+ # Implementation methods for interface
+ # Zope.I18n.IEditableTranslationService.
+
def getMessageIdsOfDomain(self, domain, filter='%'):
- """Get all the message ids of a particular domain."""
+ 'See IEditableTranslationService'
filter = filter.replace('%', '.*')
filter_re = re.compile(filter)
@@ -147,7 +152,7 @@
def getAllLanguages(self):
- """Find all the languages that are available"""
+ 'See IEditableTranslationService'
languages = {}
for key in self._catalogs.keys():
languages[key[0]] = None
@@ -155,7 +160,7 @@
def getAllDomains(self):
- """Find all available domains."""
+ 'See IEditableTranslationService'
domains = {}
for key in self._catalogs.keys():
domains[key[1]] = None
@@ -163,7 +168,7 @@
def getAvailableLanguages(self, domain):
- """Find all the languages that are available for this domain"""
+ 'See IEditableTranslationService'
identifiers = self._catalogs.keys()
identifiers = filter(lambda x, d=domain: x[1] == d, identifiers)
languages = map(lambda x: x[0], identifiers)
@@ -171,7 +176,7 @@
def getAvailableDomains(self, language):
- """Find all available domains."""
+ 'See IEditableTranslationService'
identifiers = self._catalogs.keys()
identifiers = filter(lambda x, l=language: x[0] == l, identifiers)
domains = map(lambda x: x[1], identifiers)
@@ -179,28 +184,34 @@
def addMessage(self, domain, msg_id, msg, target_language):
- """ """
+ 'See IEditableTranslationService'
+ if not self._catalogs.has_key((target_language, domain)):
+ if target_language not in self.getAllLanguages():
+ self.addLanguage(target_language)
+ if domain not in self.getAllDomains():
+ self.addDomain(domain)
+
catalog_name = self._catalogs[(target_language, domain)][0]
catalog = self[catalog_name]
catalog.setMessage(msg_id, msg)
def updateMessage(self, domain, msg_id, msg, target_language):
- """ """
+ 'See IEditableTranslationService'
catalog_name = self._catalogs[(target_language, domain)][0]
catalog = self[catalog_name]
catalog.setMessage(msg_id, msg)
def deleteMessage(self, domain, msg_id, target_language):
- """ """
+ 'See IEditableTranslationService'
catalog_name = self._catalogs[(target_language, domain)][0]
catalog = self[catalog_name]
catalog.deleteMessage(msg_id)
def addLanguage(self, language):
- """Add Language to Translation Service"""
+ 'See IEditableTranslationService'
domains = self.getAllDomains()
if not domains:
domains = [self.default_domain]
@@ -211,7 +222,7 @@
def addDomain(self, domain):
- """Add Domain to Translation Service"""
+ 'See IEditableTranslationService'
languages = self.getAllLanguages()
if not languages:
languages = ['en']
@@ -222,21 +233,26 @@
def deleteLanguage(self, language):
- """Delete a Domain from the Translation Service."""
+ 'See IEditableTranslationService'
domains = self.getAvailableDomains(language)
for domain in domains:
+ # Delete all catalogs from the data storage
for name in self._catalogs[(language, domain)]:
if self.has_key(name):
del self[name]
+ # Now delete the specifc catalog registry for this lang/domain
del self._catalogs[(language, domain)]
def deleteDomain(self, domain):
- """Delete a Domain from the Translation Service."""
+ 'See IEditableTranslationService'
languages = self.getAvailableLanguages(domain)
for language in languages:
+ # Delete all catalogs from the data storage
for name in self._catalogs[(language, domain)]:
if self.has_key(name):
del self[name]
+ # Now delete the specifc catalog registry for this lang/domain
del self._catalogs[(language, domain)]
-
+ #
+ ############################################################