/** * Переводит сообщение. * @param string $message сообщение * @param array $placeholders список плейсхолдеров * @param array $dictionaries * @return string */ public function translate($message, array $placeholders = [], array $dictionaries = []) { $dictionaries = $dictionaries ?: [self::DICTIONARY_DEFAULT]; if ($this->translator) { return $this->translator->translate($dictionaries, $message, $placeholders); } $replace = []; foreach ($placeholders as $key => $val) { $replace['{' . $key . '}'] = $val; } return strtr($message, $replace); }
/** * Возвращает сообщение, переведенное для текущей или указанной локали. * Текст сообщения может содержать плейсхолдеры. Ex: File "{path}" not found * Если идентификатор локали не указан, будет использована текущая локаль. * @param string $message текст сообщения на языке разработки * @param array $placeholders значения плейсхолдеров для сообщения. Ex: array('{path}' => '/path/to/file') * @param string $localeId идентификатор локали в которую осуществляется перевод (ru, en_us) * @return string */ public function translate($message, array $placeholders = [], $localeId = null) { if (!$message) { return $message; } $dictionaries = $this->getI18nDictionaryNames(); if ($this->traitTranslator) { return $this->traitTranslator->translate($dictionaries, $message, $placeholders, $localeId); } $replace = []; foreach ($placeholders as $key => $val) { $replace['{' . $key . '}'] = $val; } return strtr($message, $replace); }