home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 May / maximum-cd-2010-05.iso / DiscContents / boxee-0.9.20.10711.exe / scripts / OpenSubtitles / resources / lib / language.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-12-06  |  2.5 KB  |  72 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. '''
  5. Language module
  6.  
  7. Nuka1195
  8. '''
  9. import os
  10. import xbmc
  11. import xml.dom.minidom as xml
  12.  
  13. class Language:
  14.     ''' Language Class: creates a dictionary of localized strings { int: string } '''
  15.     
  16.     def __init__(self):
  17.         ''' initializer '''
  18.         base_path = os.path.join(os.getcwd().replace(';', ''), 'resources', 'language')
  19.         language = self._get_language(base_path)
  20.         self._create_localized_dict(base_path, language)
  21.  
  22.     
  23.     def _get_language(self, base_path):
  24.         ''' returns the current language if a strings.xml file exists else returns english '''
  25.         language = xbmc.getLanguage().lower()
  26.         if not os.path.isfile(os.path.join(base_path, language, 'strings.xml')):
  27.             language = 'english'
  28.         
  29.         return language
  30.  
  31.     
  32.     def _create_localized_dict(self, base_path, language):
  33.         ''' initializes self.strings and calls _parse_strings_file '''
  34.         self.strings = { }
  35.         self._parse_strings_file(os.path.join(base_path, language, 'strings.xml'))
  36.         if language != 'english':
  37.             self._parse_strings_file(os.path.join(base_path, 'english', 'strings.xml'))
  38.         
  39.  
  40.     
  41.     def _parse_strings_file(self, language_path):
  42.         ''' adds localized strings to self.strings dictionary '''
  43.         
  44.         try:
  45.             doc = xml.dom.minidom.parse(language_path)
  46.             root = doc.documentElement
  47.             if not root or root.tagName != 'strings':
  48.                 raise 
  49.             
  50.             strings = root.getElementsByTagName('string')
  51.             for string in strings:
  52.                 string_id = int(string.getAttribute('id'))
  53.                 if string_id not in self.strings and string.hasChildNodes():
  54.                     self.strings[string_id] = string.firstChild.nodeValue
  55.                     continue
  56.         except:
  57.             xbmc.output("ERROR: Language file %s can't be parsed!" % (language_path,))
  58.  
  59.         
  60.         try:
  61.             doc.unlink()
  62.         except:
  63.             pass
  64.  
  65.  
  66.     
  67.     def localized(self, code):
  68.         ''' returns the localized string if it exists '''
  69.         return self.strings.get(code, 'Invailid Id %d' % (code,))
  70.  
  71.  
  72.