private:koding:hostcms:modules:jadro:ispravlenie_problemy_s_transliteraciej

This is an old revision of the document!


В связи с прекращением поддержки протокола Яндекс.Translate 1.0 режим перевода/транслитерации в версиях HostCMS до 6.5.1 прекратил работу.
Для поддержкит протокола Яндекс.Translate 1.5 необходимо:

  1. В константу YANDEX_TRANSLATE_KEY внести ключ, получить который можно на странице https://tech.yandex.ru/key/form.xml?service=trnsl
  2. Заменить метод core_str::translate
	/**
	 * Translation from russian to english
	 * @param string $string source string
	 * @return string
	 */
	static public function translate($string)
	{
		if (defined('YANDEX_TRANSLATE_KEY') && strlen(YANDEX_TRANSLATE_KEY))
		{
			$url = 'https://translate.yandex.net/api/v1.5/tr.json/translate?' .
				'key=' . urlencode(YANDEX_TRANSLATE_KEY) .
				'&text=' . urlencode($string) .
				'&lang=en&format=plain';
 
			$Core_Http = Core_Http::instance()
				->url($url)
				->timeout(3)
				->execute();
 
			$data = trim($Core_Http->getBody());
 
			if (strlen($data))
			{
				$oData = json_decode($data);
 
				if (is_object($oData) && $oData->code == 200 && isset($oData->text[0]))
				{
					return $oData->text[0];
				}
			}
		}
		/*else
		{
			Core_Log::instance()->clear()
				->status(Core_Log::$MESSAGE)
				->write('Can not translate. Constant YANDEX_TRANSLATE_KEY is undefined.');
		}*/
 
		return NULL;
	}
 
private/koding/hostcms/modules/jadro/ispravlenie_problemy_s_transliteraciej.1439811821.txt.gz · Last modified: 17.08.15 в 14:43 by scherbakov_kad.systems