@staticmethod
    def transliterate(table,english_str):
# 
# -details-
# 
# While text remains:
#   Lookup the English part in anywhere in the string position
#   If present:
#   	  Lookup the Corresponding Tamil Part & Append it to the string.
#   Else: 
#         Continue
# 
        out_str = english_str

        # for consistent results we need to work on sorted keys
        eng_parts = list(table.keys())
        eng_parts.sort()
        eng_parts.reverse()
        
        for eng_part in eng_parts:
            tamil_equiv = table[eng_part]
            parts = out_str.split( eng_part )
            out_str = tamil_equiv.join( parts )
        
        return out_str

# Azhagi has a many-to-one mapping - using a Tamil language model and Baye's conditional probabilities
# to break the tie when two or more Tamil letters have the same English syllable. Currently 
# this predictive transliterator is not available in this package. Also such an algorithm could be
# used with any table.
# 
# challenge use a probabilistic model on Tamil language to score the next letter,
# instead of using the longest/earliest match
# http://www.mazhalaigal.com/tamil/learn/keys.php
@table - has to be one of Jaffna or Azhagi etc.
dataset/ETHPy150Open Ezhil-Language-Foundation/open-tamil/transliterate/algorithm.py/BlindIterative.transliterate