/[opental]/opental/PlacelessTranslationService/PlacelessTranslationService.py
ViewVC logotype

Diff of /opental/PlacelessTranslationService/PlacelessTranslationService.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.25 by lalo, Tue Aug 5 16:22:38 2003 UTC revision 1.26 by lalo, Tue Aug 5 17:03:13 2003 UTC
# Line 73  class PlacelessTranslationService(Folder Line 73  class PlacelessTranslationService(Folder
73      icon = 'misc_/PlacelessTranslationService/PlacelessTranslationService.png'      icon = 'misc_/PlacelessTranslationService/PlacelessTranslationService.png'
74      # major, minor, patchlevel, internal      # major, minor, patchlevel, internal
75      # internal is always 0 on releases; if you hack this internally, increment it      # internal is always 0 on releases; if you hack this internally, increment it
76      _class_version = (0, 5, 0, 0)      _class_version = (0, 5, 0, 1)
77      all_meta_types = ()      all_meta_types = ()
78    
79      security = ClassSecurityInfo()      security = ClassSecurityInfo()
# Line 89  class PlacelessTranslationService(Folder Line 89  class PlacelessTranslationService(Folder
89          self._domain = default_domain          self._domain = default_domain
90          # _catalogs maps (language, domain) to identifiers          # _catalogs maps (language, domain) to identifiers
91          self._catalogs = {}          self._catalogs = {}
92            self._fb_catalogs = {}
93          # What languages to fallback to, if there is no catalog for the          # What languages to fallback to, if there is no catalog for the
94          # requested language (no fallback on individual messages)          # requested language (no fallback on individual messages)
95          if fallbacks is None:          if fallbacks is None:
# Line 96  class PlacelessTranslationService(Folder Line 97  class PlacelessTranslationService(Folder
97          self._fallbacks = fallbacks          self._fallbacks = fallbacks
98    
99      def _registerMessageCatalog(self, catalog):      def _registerMessageCatalog(self, catalog):
100          key = (catalog.getLanguage(), catalog.getDomain())          domain = catalog.getDomain()
101          self._catalogs.setdefault(key, []).append(catalog.getIdentifier())          self._catalogs.setdefault((catalog.getLanguage(), domain), []).append(catalog.getIdentifier())
102            for lang in catalog.getOtherLanguages():
103                self._fb_catalogs.setdefault((lang, domain), []).append(catalog.getIdentifier())
104          self._p_changed = 1          self._p_changed = 1
105    
106      def _unregisterMessageCatalog(self, catalog):      def _unregister_inner(self, catalog, clist):
107          for key, combo in self._catalogs.items():          for key, combo in clist.items():
108              try:              try:
109                  combo.remove(catalog.getIdentifier())                  combo.remove(catalog.getIdentifier())
110              except ValueError:              except ValueError:
111                  continue                  continue
112              if not combo: # removed the last catalog for a language/domain combination              if not combo: # removed the last catalog for a language/domain combination
113                  del self._catalogs[key]                  del clist[key]
114    
115        def _unregisterMessageCatalog(self, catalog):
116            self._unregister_inner(catalog, self._catalogs)
117            self._unregister_inner(catalog, self._fb_catalogs)
118          self._p_changed = 1          self._p_changed = 1
119    
120      def _load_dir(self, basepath):      def _load_dir(self, basepath):
# Line 213  class PlacelessTranslationService(Folder Line 220  class PlacelessTranslationService(Folder
220              target_language = self.negotiate_language(context, domain)              target_language = self.negotiate_language(context, domain)
221    
222          # Get the translation. Use the specified fallbacks if this fails          # Get the translation. Use the specified fallbacks if this fails
223          catalog_names = self._catalogs.get((target_language, domain), ())          catalog_names = self._catalogs.get((target_language, domain), ()) or \
224                            self._fb_catalogs.get((target_language, domain), ())
225          if not catalog_names:          if not catalog_names:
226              for language in self._fallbacks:              for language in self._fallbacks:
227                  catalog_names = self._catalogs.get((language, domain),  ())                  catalog_names = self._catalogs.get((language, domain),  ())
# Line 252  class PlacelessTranslationService(Folder Line 260  class PlacelessTranslationService(Folder
260          if context is None:          if context is None:
261              raise TypeError, 'No destination language'              raise TypeError, 'No destination language'
262          else:          else:
263              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] + \
264                        [m[0] for m in self._fb_catalogs.keys() if m[1] == domain]
265              for fallback in self._fallbacks:              for fallback in self._fallbacks:
266                  if fallback not in langs:                  if fallback not in langs:
267                      langs.append(fallback)                      langs.append(fallback)

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.26

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26