|tt| means text transform.
        
        key: tt key.
        locale: main locale key into |self.tt_dd|. Default to |self.locale|
        locale2: fallback locale key into |self.tt_dd|. Default to |self.locale2|
        default: a default value in case tt value is not found. Default to raise KeyError.

def tt(self, key, locale=None, locale2=None, default=I18n.DFT):
        """
        |tt| means text transform.
        
        key: tt key.
        locale: main locale key into |self.tt_dd|. Default to |self.locale|
        locale2: fallback locale key into |self.tt_dd|. Default to |self.locale2|
        default: a default value in case tt value is not found. Default to raise KeyError.
        """
        
        #/
        locale = locale or self.locale
        
        locale2 = locale2 or self.locale2
        
        #/ get tt dict of the locale
        tt_d = self.tt_dd.get(locale, None)
        
        if tt_d is not None:
            #/
            val = tt_d.get(key, I18n.DFT)
            
            #/ if tt value is found
            if val is not I18n.DFT:
                return val
        
        #/ tt value is not found
        
        #/ if has locale2
        ## Y
        if locale2 and locale2 != locale:
            #/ fall back to locale2
            return self.tt(key, locale=locale2, default=default)
        ## N
        else:
            #/ if default is specified
            ## N
            if default is I18n.DFT:
                raise KeyError(key)
            ## Y
            else:
                return default