def getLanguage(module, filename=None): """ Retrieve a modules language file module: module name (usually automatically provided) filename: optional filename (if different from the default strings.ini) return: a dictionary style object containing language strings Handle's retrieving and accessing a modules strings.ini file To use this you need to create a strings.ini file inside your module folder containing a VALID set of language strings. <xa instance>.language.getLanguage() """ # Create a new pseudo dict from a language INI file # Did we specify a custom filename? if filename: filename = '%s/modules/%s/%s.ini' % (xa.coredir(), module, filename) else: filename = '%s/modules/%s/strings.ini' % (xa.coredir(), module) # Is there a custom translation file? if os.path.exists(filename.replace('.ini', '.custom.ini')): customlangobj = langlib.Strings(filename.replace( '.ini', '.custom.ini')) else: customlangobj = None # Does our translation file exist? if os.path.exists(filename): langobj = langlib.Strings(filename) else: raise IOError, 'Could not find %s!' % filename # Merge custom translations into the original translations if langobj and customlangobj: for key in customlangobj: if key in langobj: langobj[key].update(customlangobj[key]) else: langobj[key] = customlangobj[key] # Create pseudo dicts for each string key if langobj: for key in langobj: langobj[key] = LanguageDict(key, langobj[key]) # Return our new pseudo dict return langobj
def log(module, text, userid=None, admin=False, loglvl=0): """ XA logging module: module name (usually automatically provided) test: text string to log userid: optionally provide a userid as reference admin: set to true if this is an admin action loglvl: an optional level - messages with lower xa_log values will not be recorded Appends a line to the module's log file (found in the xa/logs directory). Includes ability to reference a specific player and also flag as an admin action """ # Is logging enabled and does our module exist? if int(es.ServerVar('xa_log')) and int( es.ServerVar('xa_log')) >= loglvl and xa.exists(module): # Was a valid source userid specified? if userid and es.exists('userid', int(userid)): # Is this userid an admin? if admin: # Adming log logtext = '%s: Admin %s [%s]: %s' % ( module, es.getplayername(userid), es.getplayersteamid(userid), text) else: # User log logtext = '%s: User %s [%s]: %s' % ( module, es.getplayername(userid), es.getplayersteamid(userid), text) else: # Default log logtext = '%s: %s' % (module, text) # Create our log folder if it does not exist if not os.path.isdir('%s/logs' % xa.coredir()): os.mkdir('%s/logs' % xa.coredir()) # Write to our log file logname = '%s/logs/l%s' % (xa.coredir(), time.strftime('%m%d000.log')) logfile = open(logname, 'a+') logfile.write( time.strftime('L %m/%d/%Y - %H:%M:%S: ') + logtext + '\n') logfile.close() # Write to the SRCDS log file es.log(logtext)
def getLanguage(module, filename = None): """ Retrieve a modules language file module: module name (usually automatically provided) filename: optional filename (if different from the default strings.ini) return: a dictionary style object containing language strings Handle's retrieving and accessing a modules strings.ini file To use this you need to create a strings.ini file inside your module folder containing a VALID set of language strings. <xa instance>.language.getLanguage() """ # Create a new pseudo dict from a language INI file # Did we specify a custom filename? if filename: filename = '%s/modules/%s/%s.ini' % (xa.coredir(), module, filename) else: filename = '%s/modules/%s/strings.ini' % (xa.coredir(), module) # Is there a custom translation file? if os.path.exists(filename.replace('.ini', '.custom.ini')): customlangobj = langlib.Strings(filename.replace('.ini', '.custom.ini')) else: customlangobj = None # Does our translation file exist? if os.path.exists(filename): langobj = langlib.Strings(filename) else: raise IOError, 'Could not find %s!' % filename # Merge custom translations into the original translations if langobj and customlangobj: for key in customlangobj: if key in langobj: langobj[key].update(customlangobj[key]) else: langobj[key] = customlangobj[key] # Create pseudo dicts for each string key if langobj: for key in langobj: langobj[key] = LanguageDict(key, langobj[key]) # Return our new pseudo dict return langobj
def log(module, text, userid=None, admin=False, loglvl=0): """ XA logging module: module name (usually automatically provided) test: text string to log userid: optionally provide a userid as reference admin: set to true if this is an admin action loglvl: an optional level - messages with lower xa_log values will not be recorded Appends a line to the module's log file (found in the xa/logs directory). Includes ability to reference a specific player and also flag as an admin action """ # Is logging enabled and does our module exist? if int(es.ServerVar('xa_log')) and int(es.ServerVar('xa_log')) >= loglvl and xa.exists(module): # Was a valid source userid specified? if userid and es.exists('userid', int(userid)): # Is this userid an admin? if admin: # Adming log logtext = '%s: Admin %s [%s]: %s' % (module, es.getplayername(userid), es.getplayersteamid(userid), text) else: # User log logtext = '%s: User %s [%s]: %s' % (module, es.getplayername(userid), es.getplayersteamid(userid), text) else: # Default log logtext = '%s: %s' % (module, text) # Create our log folder if it does not exist if not os.path.isdir('%s/logs' % xa.coredir()): os.mkdir('%s/logs' % xa.coredir()) # Write to our log file logname = '%s/logs/l%s' % (xa.coredir(), time.strftime('%m%d000.log')) logfile = open(logname, 'a+') logfile.write(time.strftime('L %m/%d/%Y - %H:%M:%S: ') + logtext + '\n') logfile.close() # Write to the SRCDS log file es.log(logtext)
def getLanguage(module, file = None): if file: filename = "%s/modules/%s/%s.ini" % (xa.coredir(), module, file) else: filename = "%s/modules/%s/strings.ini" % (xa.coredir(), module) if os.path.exists(filename.replace('.ini', '.custom.ini')): customlangobj = langlib.Strings(filename.replace('.ini', '.custom.ini')) else: customlangobj = None if os.path.exists(filename): langobj = langlib.Strings(filename) else: raise IOError, "Could not find %s!" % filename if langobj and customlangobj: for key in customlangobj: if key in langobj: langobj[key].update(customlangobj[key]) else: langobj[key] = customlangobj[key] if langobj: for key in langobj: langobj[key] = LanguageDict(key, langobj[key]) return langobj
def log(module, text, userid=0, admin=False): if bool(int(es.ServerVar("xa_log"))) and xa.exists(module): if (int(userid) > 0) and es.exists('userid', int(userid)): if admin: logtext = str(module) + ': Admin ' + es.getplayername(userid) + ' [' + es.getplayersteamid(userid) + ']: ' + str(text) else: logtext = str(module) + ': User ' + es.getplayername(userid) + ' [' + es.getplayersteamid(userid) + ']: ' + str(text) else: logtext = str(module) + ': ' + str(text) logname = '%s/logs/l%s' % (xa.coredir(), time.strftime('%m%d000.log')) logfile = open(logname, 'a+') logfile.write(time.strftime('L %m/%d/%Y - %H:%M:%S: ') + logtext + '\n') logfile.close() es.log(logtext) return True return False