src/PeskyCMF/Config/CmfConfig.php
static public function transCustom($path, array $parameters = [], $locale = null) {
        $dict = static::getInstance()->custom_dictionary_name();
        $path = '.' . ltrim($path, '.');
        $primaryPath = $dict . $path;
        $trans = trans($primaryPath, $parameters, $locale);
        if ($trans === $primaryPath && $dict !== 'cmf::custom') {
            $fallbackPath = 'cmf::custom' . $path;
            $trans = trans($fallbackPath, $parameters, $locale);
            if ($trans === $fallbackPath) {
                return $primaryPath;
            }
        }
        return $trans;
    }
static public function transCustom($path, array $parameters = [], $locale = null) {
        $dict = static::getInstance()->custom_dictionary_name();
        $path = '.' . ltrim($path, '.');
        $primaryPath = $dict . $path;
        $trans = trans($primaryPath, $parameters, $locale);
        if ($trans === $primaryPath && $dict !== 'cmf::custom') {
            $fallbackPath = 'cmf::custom' . $path;
            $trans = trans($fallbackPath, $parameters, $locale);
            if ($trans === $fallbackPath) {
                return $primaryPath;
            }
        }
        return $trans;
    }
Translate from custom dictionary. You can use it via CmfConfig::transCustom() insetad of
CmfConfig::getPrimary()->transCustom() if you need to get translation for primary config.
Note: if there is no translation in your dictionary - it will be imported from 'cmf::custom' dictionary
@param string $path - without dictionary name. Example: 'admins.test' will be converted to '{dictionary}.admins.test'
@param array $parameters
@param null|string $locale
@return string|array