Мультиязычность сайта

Мультиязычность сайта

Данная доработка позволяет быстро создать мультиязычность для сайта на Turbo CMS. Перевод можно делать как вручную так и автоматически. 

Установка решения на примере Turbo Shop и дефолтного шаблона.

Демо: lang.turbo-cms.com

Файлы для замены Turbo Shop скачать

Установка решения

1. Скачать архив ссылка

2. Залить папку sli на сервер в корень сайта.

3. Добавить в файл api/Turbo.php 10 строка

include_once($_SERVER['DOCUMENT_ROOT'].'/sli/protected/sli.php');

перед

class Turbo

4. В файле api/Notify.php после 79 строки 

$subject = $this->design->get_var('subject');

добавляем

/* Langs */
$lang = SLITranslate::getCurrentLanguage();
if(!empty($lang))
{
  $email_template = SLITranslate::t($email_template, $lang);
  $subject = SLITranslate::t($subject, $lang);
}
/* Langs */	

в этом же файле повторим действие после 180 строки 

$subject = $this->design->get_var('subject');

добавляем 

/* Langs */
$lang = SLITranslate::getCurrentLanguage();
if(!empty($lang))
{
  $email_template = SLITranslate::t($email_template, $lang);
  $subject = SLITranslate::t($subject, $lang);
}
/* Langs */	

5. В файле api/Config.php после 56 строки

$this->vars['root_url'] .= '/'.$subdir;

 добавляем 

$lang = SLITranslate::getCurrentLanguage();
if(!empty($lang))
{
  $this->vars['root_url'] .= '/'.$lang;
}

6. В файле view/View.php после 61 строки

$this->currency = reset($this->currencies);

добавляем

/* Langs */
$this->langs = SLIApi::getLanguagesChangeList();
$this->design->assign('langs',	$this->langs);
$lang = SLITranslate::getCurrentLanguage();
$this->design->assign('lang',	$lang);
/* Langs */

7. В файле ajax/search_products.php в 16 строку после 

$products = $turbo->db->results();

добавляем

$lang = SLITranslate::getCurrentLanguage();

в этом же файле после 26 строки после

$suggestion->value = $product->name;

добавляем

if(!empty($lang))
{
  $suggestion->value = SLITranslate::t($product->name, $lang);
}

8. В файле ajax/cart.php после 17 строки 

$result = $turbo->design->fetch('cart_informer.tpl');

добавляем 

/* Langs */
$lang = SLITranslate::getCurrentLanguage();
if(!empty($lang))
{
  $result = SLITranslate::t($result, $lang);
}
/* Langs */	

9. В файле /design/ваш_шаблон/html/index.tpl перед </head> добавить

<link href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.1.0/css/flag-icon.min.css" rel="stylesheet">

10. В файле /design/ваш_шаблон/html/index.tpl после 116 строки 

<ul class="nav navbar-nav navbar-right">

добавляем и заменяем в коде ваш-сайт.com на название вашего сайта

<li class="nav-item dropdown">
	{if $langs['alias'] == $lang}
		<a class="nav-link dropdown-toggle" href="{$config->root_url}" id="dropdown09" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="flag-icon flag-icon-ru"></span> ru</a>
	{/if}
	{foreach $langs as $val}
		{if $val['alias'] == $lang}
			<a class="nav-link dropdown-toggle" href="{$config->root_url}" id="dropdown09" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="flag-icon flag-icon-{if $val['alias']=='en'}us{else}{$val['alias']}{/if}"></span> {$val['alias']}</a>
		{/if}
	{/foreach}
	<div class="dropdown-menu" aria-labelledby="dropdown09">
		{foreach $langs as $val}
			{if $val['isActive'] != 0 || !isset($val['isActive'])}
				<a % href="http://ваш-сайт.com/{if $val['alias']=='ru'}{else}{$val['alias']}/{/if}" class="dropdown-item"><span class="flag-icon flag-icon-{if $val['alias']=='en'}us{else}{$val['alias']}{/if}"> </span>  {$val['title']}</a>
			{/if}
		{/foreach}
	</div>
</li>

11. Добавить в файл .htaccess, который находится в корневой директории сайта, после RewriteEngine on  строки для нужных языков 

RewriteRule	^en/(.*)?$  $1 [L]
RewriteRule	^ua/(.*)?$  $1 [L]

12. Выставить права 0777 на папку protected/data и на все внутренние директории.

13. Открыть файл protected/config/config.php и прописать данные коннекта к БД MySQL.

14. Зайти в админку по адресу htt://адресСайта/sli/index.php

15. Ввести свой Email и пароль.

16. Войти под указанными данными.

Начало работы

1. Заходим в админку, переходим на страницу с добавлением языков.

2. Нажимаем кнопку добавить. Заполняем поля. Алиас - это краткое название для языка (обычно ua, en, ru, cn и тд.), которое будет отображатся в адресной строке при выборе языка.

3. Нажимаем кнопку сохранить.

4. Переходим на вкладку параметры. Выбираем язык оригинала. Это, собственно, язык, на котором создан сайт и который будет использоваться для автоматического перевода.

5. Кэширование использует Memcache, который должен быть установлен на Вашем сервере. Если расширение отсутствует, игнорируем данную возможность ускорить работу переводчика, либо устанавливаем расширение.

6. Показывать время отработки программы. Эта настройка отобразит время, за которое система парсит и переводит страницу, на которой Вы находитесь. 

7. Просканировать сайт.

8. Перевести данные.

Настройка парсера

Заполняем поля настроек парсера:

Игнорировать адреса
(каждый адрес с новой строки)

#/turbo/.*
#/ajax/.*

Игнорировать страницы с текстом
(каждый адрес с новой строки)

<title>PHP Error</title>
syntax error
Division by zero in

Игнорировать теги
(через запятую)

href, script

Переводить значение атрибутов
(через запятую)

value, placeholder, data-notice, title, alt, content,  data-content, options

остальные поля оставляем пустыми

Сканер сайта

Сканер - это модуль, с помощью которого Вы можете просканировать свой сайт на наличие данных на перевод.

Сканирование "по URL". Для того, чтобы просканировать весь сайт, в поле "адрес" ставим "/". Таким образом мы начнем сканировать весь сайт с главной страницы. Сканер пройдется по всем страницам и сохранит (исходя из настроек парсера) данные, которые необходимо перевести.

Сканирование "Sitemap". В поле "адрес" прописываем путь к файлу ваш-сайт.com/sitemap.xml, и парсер пройдется по всем ссылкам файла.

Сканировать весь сайт имеет смысл только при первом подключении системы. Все данные заносятся в базу автоматически при первом посещении страницы.

Переменные

Переменные - модуль сайта, который позволяет создавать жесткие замены контента для каждого используемого языка.
Например, у нас на сайте есть картинка с русским текстом, и мы хотим, чтобы в английской версии отображалась другая картинка с английским текстом. Для этого в данном разделе создаем переменную.
В поле "оригинал" пишем адрес картинки "/ru-pic.png". В поле "английский" пишем адрес к картинке для английской версии сайта "/en-pic.png". Теперь при смене языка на английский все вхождения "/ru-pic.png" будут заменены на "/en-pic.png".
Таким образом мы можем заменять JavaScript, изменять текст, который не попадает на перевод обычным образом, и заменять статику.

Коментарии

Пока нет комментариев.