# File lib/localization.rb, line 7
  def l(symbol, *arguments)
    language = CONFIG[:default_language]

    symbol = symbol.to_sym if symbol.is_a? String

    # translation of an LString is simply a call to to_s
    return symbol.to_s if symbol.is_a? LString
  
    # translation of an array
    if symbol.is_a? Array 
      raise ArgumentError.new("Cannot translate an empty array") if symbol.empty?
      raise ArgumentError.new("Symbol is an array, arguments must be empty") unless arguments.empty?
      arguments = symbol
      symbol = arguments.shift
    end

    begin
      translation = (LOCALIZED_STRINGS[language][symbol] or
                       LOCALIZED_STRINGS['en'][symbol] or
                       symbol.to_s)
    rescue
      translation = symbol.to_s
    end

    begin
      return translation % arguments
    rescue => e
      raise ArgumentError.new("Translation value #{translation.inspect} " + 
          "with arguments #{arguments.inspect} caused error '#{e.message}'")
    end
  end