singletonIf('listings.item.translate', function ($app) { $i = $app->make(static::class); $i->init(); return $i; }); return bff('listings.item.translate'); } /** * Registered traslation providers * @param null|string $key * @return TranslationProvider[] | TranslationProvider | null */ public function translationProvidersList(?string $key = null) { return $this->locale->translationProvidersList($key); } /** * Get translation provider * @param string $key * @return TranslationProvider|null */ public function translationProvider(string $key): ?TranslationProvider { return $this->translationProvidersList($key); } /** * Перевод массива строк * @param array $data данные для перевода ['field' => 'hello world']; * @param string $lang исходный язык, например 'en' * @param array $languages языки на которые необходимо выполнить перевод (если не указано => оставшиеся кроме $lang) * @return array|bool переведенные данные для оставшихся языков ['ru' => ['field' => 'перевeденный текст']] * или false - ошибка */ public function translate(array $data, string $lang, array $languages = []) { if (empty($data)) { return []; } $providerKey = $this->config('listings.translate', '', TYPE_NOTAGS); $provider = $this->translationProvider($providerKey); if ($provider) { return $provider->translate($data, $lang, $languages); } $this->log('Translation provider not found "' . $providerKey . '"'); return false; } }