docs: def gettext(self, message):
          """Contacts the GP service instance to find the translated value for
          the provided message key.
  
          If translated value is not available, and a fallback has been set,
          the fallback will be used. If there is no fallback, the source language
          value is returned. And if the message key is not found, the message
          key itself will be returned.
  
          The caching feature may be used to cache translated values locally
          in order to reduce the number of calls made to the GP service.
  
          * ``cacheTimeout = 0``, do not cache
          * ``cacheTimeout = -1``, cache forever
          * ``cacheTimeout > 0``, store cache value for specified number of \
              minutes
  
          """
          # cache forever or for specified time
          if self.__cacheTimeout == -1 or self.__cacheTimeout > 0:
              # get time passed since last cache
              if self.__cacheMapTimestamp:
                  minutesPassed = (datetime.datetime.now() -
                      self.__cacheMapTimestamp).total_seconds() / 60
  
              # first call, or cache expired; initilize the cache
              if not self.__cacheMapTimestamp or (self.__cacheTimeout != -1 and
                  minutesPassed >= self.__cacheTimeout):
  
                  # set sourceFallback True if there is no Translations fallback
                  sourceFallback = False if self._fallback else True
  
                  self.__cachedMap = self.__client._GPClient__get_keys_map(
                      self.__bundleId, self.__languageId, fallback=sourceFallback)
  
                  # only record the timestamp if caching is enabled
                  if self.__cacheTimeout != 0:
                      self.__cacheMapTimestamp = datetime.datetime.now()
  
              # check cache for message key
              if self.__cachedMap:
                  value = self.__cachedMap.get(message)
              else:
                  value = None
  
              return self.__get_return_value(message, value)
          else:
              # no caching, get the translated value directly from GP service
              # set sourceFallback True if there is no Translations fallback
              sourceFallback = False if self._fallback else True
              tmpMap = self.__client._GPClient__get_keys_map(
                  self.__bundleId, self.__languageId, fallback=sourceFallback)
  
              # check map for message key
              if tmpMap:
                  value = tmpMap.get(message)
              else:
                  value = None
  
              return self.__get_return_value(message, value)