• О маркетплейс
  • Как купить
  • Гарантия
  • Мой кабинет
  • Отследить заказ
  • Контакты
  • ...
    Войти
    +7 (926) 525-75-05
    +7 (926) 525-75-05 с 9:00 до 18:00
    Заказать звонок
    Апсель.Маркет
    Сравнение0 Желания 0 Корзина0 пуста 0
    +7 (926) 525-75-05
    +7 (926) 525-75-05 с 9:00 до 18:00
    Заказать звонок
    Каталог решений
    • Готовые интернет-магазины
148
      Готовые интернет-магазины 148
      • Авто8
      • Бытовая техника, электроника и оборудование14
      • Детские товары5
      • Мебель8
      • Одежда, обувь, аксессуары12
      • Продукты питания13
      • Строительство и ремонт11
      • Универсальные46
      • Украшения, аксессуары6
      • Спорт, туризм, отдых6
      • Другое7
      • Товары для животных2
      • Подарки и сувениры6
      • Красота и здоровье8
      • B2B9
      • Мобильные приложения
    • Готовые сайты
373
      Готовые сайты 373
      • Landing page84
      • Государство
      • Медицина
      • Недвижимость
      • Образование
      • Ресторанный бизнес
      • Строительство
      • ТСЖ, ЖСК
      • Спорт, туризм
      • Другое
      • Каталог товаров, услуг153
      • Корпоративный сайт222
      • Информационный портал40
      • Персональный сайт41
      • Универсальные20
    • Для интернет-магазина
523
      Для интернет-магазина 523
      • Интеграция с онлайн-кассами22
      • Каталог товаров123
      • Свойства, фильтр, поиск
      • Товар дня
      • Корзина, покупка145
      • Купить в 1 клик
      • Платежные системы
      • Службы доставки
      • Подарки, скидки55
      • Работа с заказами72
      • Другое119
      • Курсы валют8
    • Поддержка клиентов
157
      Поддержка клиентов 157
      • Онлайн-консультанты24
      • Заказ звонка7
      • Подписки и рассылки17
      • Отзывы, комментарии24
      • Обратная связь44
      • Другое43
    • Маркетинг, реклама
303
      Маркетинг, реклама 303
      • Баннеры46
      • Статистика сайта21
      • SEO138
      • Другое61
      • Региональность22
    • Интеграция
270
      Интеграция 270
      • 1С и другие ERP40
      • Социальные сети39
      • IP-телефония3
      • SMS-шлюзы21
      • Торговые площадки68
      • Другое74
      • Почтовые сервисы13
    • Инструменты
747
      Инструменты 747
      • Контент-менеджеру424
      • Работа с фото и видео
      • Работа с текстами
      • Новости
      • Карты
      • Другое
      • Для разработчиков440
      • Установка, настройка сайта
      • Разработка
      • Отладка, поддержка
      • Безопасность
      • Авторизация, пользователи
      • Импорт/экспорт данных
    • Мобильные приложения
12
      Мобильные приложения 12
    • Решения для Битрикс24
308
      Решения для Битрикс24 308
      • Документы9
      • Задачи34
      • Контакты
      • CRM68
      • Бизнес-процессы47
      • Импорт/экспорт11
      • Сотрудники48
      • Другое93
      • Чат-боты7
      • Телефония9
      • Инструменты67
    Скидки
    Новинки
    Акции
    Битрикс
    • Управление сайтом
      Управление сайтом
      • Редакция «Старт»
      • Редакция «Стандарт»
      • Редакция «Малый Бизнес»
      • Редакция «Бизнес»
    • Продление Битрикс
      Продление Битрикс
      • Продление «Первый сайт»
      • Продление «Старт»
      • Продление «Стандарт»
      • Продление «Малый бизнес»
      • Продление «Эксперт»
      • Продление «Бизнес»
      • Продление «Веб-кластер»
      • Продление «Бизнес Веб-кластер»
    • Переход редакций
      Переход редакций
      • Переход на «Старт»
      • Переход на «Стандарт»
      • Переход на «Малый бизнес»
      • Переход на «Бизнес»
      • Переход на «Магазин + CRM»
    • Битрикс24 облако
      Битрикс24 облако
      • Архивные тарифы
      • Тариф «Базовый»
      • Тариф «Стандартный»
      • Тариф «Профессиональный»
    • Битрикс24 коробка
      Битрикс24 коробка
      • Редакция «Магазин + CRM»
      • Редакция «50 пользователей»
      • Редакция «100 пользователей»
      • Редакция «250 пользователей»
      • Редакция «500 пользователей»
    • Переход Битрикс24
      Переход Битрикс24
      • Переход на «Магазин + CRM»
      • Переход на «50 пользователей»
      • Переход на «100 пользователей»
      • Переход на «250 пользователей»
      • Переход на «500 пользователей»
    • Продление Битрикс24
      Продление Битрикс24
      • Продление «CRM»
      • Продление «Магазин + CRM»
      • Продление «50 пользователей»
      • Продление «100 пользователей»
      • Продление «250 пользователей»
      • Продление «500 пользователей»
    • Мобильное приложение
      Мобильное приложение
      • Битрикс: Мобильное приложение
    Как купить
    • Условия оплаты
    • Условия доставки
    • Гарантия на товар
    Блог
    Ещё
      Апсель.Маркет
      Сравнение0 Желания 0 Корзина0 0
      Апсель.Маркет
      Сравнение0 Желания 0 Корзина0 0
      Телефоны
      +7 (926) 525-75-05 с 9:00 до 18:00
      Заказать звонок
      • Личный кабинет
      • Корзина0
      • Желания0
      • Сравнение товаров0
      • +7 (926) 525-75-05
      Контактная информация
      141703 г. Москва, ул. Речная, 22, Долгопрудный
      info@apsel.ru
      • Telegram
      • Viber
      • WhatsApp
      Главная
      -
      Маркетплейс Битрикс
      -
      Маркетинг, реклама 303
      Готовые интернет-магазины 148Готовые сайты 373Для интернет-магазина 523Поддержка клиентов 157Интеграция 270Инструменты 747Мобильные приложения 12Решения для Битрикс24 308
      -mrLexndr Мультиязычность: перевод сайта через GPT

      mrLexndr Мультиязычность: перевод сайта через GPT

      Тип лицензии
      Новинка
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • Previous
      • Next
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      • mrLexndr Мультиязычность: перевод сайта через GPT
      Код решения: 173753
      Характеристики
      Актуальная версия
      8.1.3
      ?
      Поддержка композитной технологии кеширования означает высокую скорость работы, а значит ваш сайт будет быстрее чем у конкурентов
      Поддержка Композита
      Нет
      ?
      Поддержка адаптивности означает корректное отображение шаблона на мобильных устройствах, таких как планшет или мобильный телефон.
      Адаптивность
      Нет
      129 987 руб.
      Доступно к покупке
      Получить скидку
      КупитьУже в корзине
      Обратите внимание, для установки решения/модуля, у вас должна быть активная лицензия Битрикс
      • Описание
      • Как купить
      • Оплата
      • Доставка
      • Отзывы
      • Задать вопрос
      Описание

      Модуль переводит сайт на Битриксе: интерфейс, инфоблоки, каталог, SEO-поля и оформление заказа. Перевод хранится в базе рядом с оригиналом — в том же элементе, а не в копии сайта и не в языковых файлах. Дубли инфоблоков заводить не нужно, а править тексты может контент-менеджер.

      Работает и на сайте, который собирали без мысли о переводе: подписи из языковых файлов шаблонов начинают читаться из словаря без переписывания вызовов, а свойства без языкового суффикса получают языковые пары.

      Что переводится

      • Фразы интерфейса — подписи кнопок, меню, подсказки, тексты блоков вёрстки, письма. Каждая фраза заводится один раз и выводится на языке посетителя.
      • Фразы из языковых файлов — всё, что шаблоны и компоненты выводят штатным GetMessage() из lang/*.php.
      • Инфоблоки — названия, анонсы, описания, свойства и их значения, подписи свойств, разделы, торговые предложения, справочники Highload-блоков.
      • SEO — шаблоны title, description, alt и title картинок на каждом языке, с наследованием по разделам.
      • Магазин — названия товаров и свойств на витрине и в корзине, свойства заказа, типы плательщиков, названия платёжных систем и служб доставки, единицы измерения.
      • Поиск, хлебные крошки, даты — посетитель английской версии видит результаты выдачи и названия месяцев на своём языке.

      Названия платёжных систем и служб доставки ядро Битрикса хранит одним текстом на все языки, поля под перевод там нет вовсе. Модуль переносит их в словарь и переводит как обычные фразы — поэтому оформление заказа на английском выглядит английским целиком, а не наполовину.

      Длина текста не ограничена, форматы — тоже

      • Обычная строка — название товара, подпись кнопки. Переводится как есть.
      • HTML — описание товара, текст новости. Разметка обязана вернуться из перевода целой, а незакрытый тег чинится всегда: один такой тег разъезжает вёрстку всей страницы.
      • Блочный редактор sprint.editor. Его поле — это JSON со структурой блоков, и переводить его как текст нельзя: перевелись бы имена ключей. Модуль отдаёт такое поле отдельным форматом, переводятся только подписи, заголовки и текстовые значения. Если после перевода число узлов не совпало, запись отменяется целиком. Поддержка идёт из коробки.

      Предельной длины у переводимого текста нет: статья на сорок тысяч знаков уходит целиком, а не режется на куски. Одинаковые строки внутри порции отправляются один раз, а строки без единой буквы — артикулы, числа, коды — не отправляются вовсе. Платить за перевод артикула незачем.

      Машинным переводом пользоваться необязательно
      Модуль остаётся полноценным хранилищем переводов, даже если вы не потратите на машинный перевод ни рубля. Языковые поля создаются, переключение языка работает, подстановка на витрине идёт — а тексты вы заполняете руками: в карточке элемента, в словаре, выгрузкой в CSV и обратно.

      Так работают проекты, где перевод делает штатный редактор или бюро: модуль даёт структуру и инструменты, а откуда взялся текст, ему безразлично. Машинный перевод включается тогда, когда руками становится долго.

      Готовый сайт — без переписывания шаблонов
      Сайт, собранный до модуля, выводит подписи через GetMessage('КОД'), а текст лежит в lang/ru/*.php рядом с шаблоном. Менять эти вызовы по всему дереву не нужно. Модуль один раз ищет фразы в языковых файлах отмеченных каталогов, заносит их в словарь — и дальше тот же GetMessage() на языках перевода отдаёт текст из словаря. Правка фразы в словаре меняет текст на сайте.

      Вызовы в шаблонах модуль не переписывает, языковые файлы не удаляет: вернуть прежнее поведение можно в любой момент. Если в каком-то шаблоне язык подключается устаревшим вызовом, который перехватить нельзя, экран покажет этот файл и готовую замену одной строки. Вставлять её модуль сам не будет — шаблон ваш. Совпадения кодов с чужими файлами выносятся в отчёт: пока вы их не разобрали, фраза работает как раньше.

      С инфоблоками то же. Название, анонс и описание элемента переводятся всегда, а свойства — по языковому суффиксу: TITLE_RU получает пару TITLE_EN. На сайте, который делали без перевода, свойства называются просто BRAND или MATERIAL. Отметьте такой инфоблок в настройках — модуль возьмёт в перевод все его текстовые и списочные свойства: BRAND получит пару BRAND_EN. Инфоблоки, где нет ни одного свойства с суффиксом, настройки называют сами.

      В новом коде текст пишется прямо в шаблоне
      Для нового кода есть свой вызов. Текст на базовом языке пишется вторым аргументом:

      <?= LANG_VAR('SUBMIT_BTN', 'Отправить заявку') ?>

      При первом показе страницы фраза заводится в словаре сама, с этим самым текстом. Поля остальных языков остаются пустыми — это честное состояние «перевода ещё нет», и ровно такие поля подбирает машинный перевод.

      Верстать и программировать можно по-русски, как будто мультиязычности на проекте нет. Сайт работает с первой минуты, словарь наполняется сам, а решение о языках принимается когда угодно потом. Отдельного этапа «вынести все надписи шаблона в языковые файлы» в проекте не возникает.

      Переменные подставляются по имени, чтобы фраза оставалась целой: LANG_VAR('DAYS_LEFT', ['COUNT' => 5]) для записи «Осталось #COUNT# дней». Склейка из кусков в другом языке не переводится в принципе — там другой порядок слов.

      Копий штатных компонентов в поставке нет
      Модуль не подменяет компоненты Битрикса своими копиями. Он подставляет перевод в данные, которые компонент уже получил, — одной строкой в result_modifier.php шаблона:

      IblockHelper::substituteStandardFields($arResult);

      Копия штатного компонента живёт до следующего обновления ядра. Дальше её чинит тот, кто внедрял, и так на каждом обновлении. Корзина и оформление заказа меняются от версии к версии чаще остального, и их копии ломаются заметнее всего — поэтому оформление заказа модуль переводит событиями, и в его шаблон лезть не нужно вовсе.

      Если элементы вы выбираете сами, не нужно и строки: перевод подставляется при выборке.

      Счёт за перевод предсказуем

      • Очередь запоминает, что изменилось, но сама ничего не переводит. Деньги списываются, когда вы нажимаете кнопку. Обмен с 1С на тысячи позиций поэтому не превращается в неожиданный счёт.
      • Сравнение идёт по каждому полю отдельно: поправили заголовок — в перевод уйдёт заголовок, за описание вы не платите второй раз.
      • Большой объём переводится в фоне: запустили кнопкой, закрыли вкладку, над таблицей видно, сколько переведено и как идёт текущий шаг. Пауза проверяется перед каждым платным шагом, отменить задание можно в любой момент — переведённое остаётся.
      • Если сервис не успел ответить, шаг откладывается, а не считается ошибкой: следующий шаг заберёт готовый перевод без повторного списания.
      • Галочка «Перевести заново уже переведённое» стоит в красной плашке и при запуске задаёт отдельный вопрос. Случайно оплатить повторный перевод всего каталога не получится.
      • Баланс и история платежей видны в админке, пополнение — оттуда же.

      Перевод предсказуем так же, как счёт

      • Описание сайта для переводчика — несколько предложений о проекте — уходит модели перед каждым переводом. Без него слово «заявка» переводится одним из десятка способов в зависимости от соседних слов.
      • Глоссарий задаёт термины, которые модель не подбирает, а берёт у вас: [EN] О компании = About Us, Сбербанк = Sberbank.
      • Отказ модели обрабатывается сам. Иногда вместо перевода приходит «я не могу обсуждать эту тему» — срабатывает на безобидных текстах про очереди на границе или таможенные ограничения. Модуль делает три попытки подряд: обычный перевод, повтор со строгой формулировкой, машинный переводчик Яндекса. Поля, которые перевела машина, попадают в отдельный список — глоссарий к ним не применялся, и их стоит просмотреть.
      • Сверка находит испорченные переводы — потерянную ссылку, незакрытый тег, оборванный текст. Обычная проверка их не замечает никогда: оригинал не менялся, значит с её точки зрения всё переведено. А на странице при этом может не быть половины текста.
      • Правка руками сильнее машины. Перевод, сохранённый человеком, очередь машинным не заменит, пока не изменится оригинал.

      Как с этим работает контент-менеджер

      • Переключите язык админки и откройте карточку товара: поля показывают перевод, сохранение записывает перевод, оригинал остаётся нетронутым. Сверху жёлтая плашка, чтобы не перепутать, в каком режиме вы находитесь.
      • Фразы, выведенные через LANG_VAR(), правятся прямо на странице сайта: клик по фразе открывает маленький редактор, результат сразу виден в вёрстке. Длину текста видно только там — фраза, которая в списке выглядит нормальной, на кнопке не помещается.
      • Словарь выгружается в CSV и заливается обратно. Можно отдать переводчику один язык и залить только его: остальные колонки не затрутся.

      Переведённые страницы индексируются
      Поисковый робот получает готовую HTML-страницу с переведённым текстом. Ничего не подменяется скриптом на лету и не накладывается поверх оригинала.

      Шаблоны title и description переводятся на каждом языке отдельно, поэтому языковые версии не конкурируют между собой в выдаче. Макросы {=this.name} и {=this.property.CODE} подставляют переведённые значения; если модель потеряла макрос при переводе, шаблон не записывается вовсе. Разметка hreflang и файл sitemap настраиваются штатными средствами Битрикса.

      Безопасность: что уходит с вашего сервера
      Единственный внешний адрес во всём модуле — api.mrlexndr.com. Модуль обращается к нему в трёх случаях: когда вы переводите, когда открываете экран с балансом и когда пополняете счёт. С публичных страниц сайта запросов к сервису нет.

      В запросе на перевод — строки на перевод, языки, формат, выбранный движок, глоссарий, описание сайта и домен. В запросе баланса — только хеш лицензии и домен. Телеметрии в модуле нет: данные посетителей, статистика посещений, сведения об установке и содержимое сайта помимо переводимых строк наружу не передаются.

      Ключей Яндекса и Google на сайте заводить не нужно: сайт узнаётся по хешу лицензии Битрикса, ключи живут на стороне сервиса — красть из настроек модуля нечего. Адрес сервиса сверяется со списком разрешённых хостов, так что подменить его настройкой и увести хеш лицензии на чужой сервер нельзя.

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

      Переводы остаются вашими
      Удаление модуля идёт мастером с подтверждением. Переводы не удаляются ни при какой настройке: словарь и таблица состояния остаются на месте. Это контент, а не служебные данные, и восстановить его неоткуда — вернёте модуль, переводить заново и платить второй раз не придётся. Галочка на первом шаге мастера, включённая по умолчанию, отвечает за другое: за настройки модуля — список языков, глоссарий, описание сайта и выбранный движок.

      Хранятся переводы в штатных объектах Битрикса, а не в собственном формате: языковые свойства элементов (NAME_EN, PREVIEW_TEXT_EN), пользовательские поля разделов, highload-блок со словарём. Прочитать их обычным API Битрикса можно и без установленного модуля.

      Языковые файлы шаблонов модуль не трогает, поэтому GetMessage() после удаления просто вернётся к текстам из них. В коде проекта от модуля остаются только вызовы LANG_VAR() и IblockHelper в шаблонах. Убрать их — значит вернуться к исходным русским значениям; сайт при этом продолжит работать. Если такая привязка смущает заранее, заведите свою функцию-обёртку: тогда имя модуля будет знать один файл проекта, и этому в документации посвящена отдельная страница.

      Для разработчика

      • Публичный интерфейс — LANG_VAR(), Lang::get() и IblockHelper. Для случаев, когда код фразы приходит из данных, а не из шаблона, есть Lang::peek() — чтение без автосоздания, чтобы не мусорить в словаре.
      • Около двадцати пяти обработчиков событий. Экран «Проверка стенда» одной кнопкой прогоняет проверки — обработчики на месте, схема базы в порядке, настройки не противоречат друг другу — и показывает паспорт установки: версии модуля, PHP и СУБД, каталог, из которого загружен модуль, доступные модули Битрикса, языки перевода, запуск агентов по расписанию. Отсутствие обработчика снаружи не видно: очередь просто перестаёт наполняться, и ошибки при этом нет.
      • Кастомный компонент от штатного ничем не отличается: перевод подставляется в тот массив с элементами, который компонент уже собрал.
      • Документация — отдельный раздел на сайте разработчика: от первой установки до внутреннего устройства SEO-хранилища и полного списка сообщений модуля.

      Требования

      • PHP 8.2 или новее. Требование жёсткое: часть классов модуля объявлена readonly-классами, а такой конструкции до 8.2 не было.
      • Модули Битрикса: главный и Highload-блоки; для перевода инфоблоков — «Информационные блоки», для магазина — «Интернет-магазин».
      • Для перевода фраз из языковых файлов через GetMessage() — главный модуль версии 23.0.0 или новее. На более старом ядре модуль ставится и работает, не включается только этот перехват.
      • Исходящий HTTPS до сервиса перевода. Без сети словарь и подстановка переводов на витрине работают, не работает только машинный перевод.

      Чего модуль не делает

      • Языковые версии сайта делаются языками Битрикса. Если на сайте они устроены иначе — папками или доменами без привязки языка, — модуль будет отдавать один и тот же язык везде.
      • Готовые решения Аспро модуль сейчас не поддерживает. Мультиязычность у Аспро штатно строится на многосайтовости, а шаблон решения лежит в /bitrix/templates/ и перезаписывается его обновлением — строка в result_modifier.php там не проживёт до следующего обновления. Если у вас Аспро, напишите до покупки.
      • Из языковых файлов не забирается текст, вписанный в шаблон напрямую, без GetMessage(), и фразы JavaScript (BX.message). Правка прямо на странице сайта работает только для фраз LANG_VAR().
      • Движки перевода: Google Gemini и Яндекс. DeepL нет.
      • Перевод заново уже переведённого заменяет и поправленные руками тексты; прежние не сохраняются, откатить можно только из бэкапа.

      Сколько это стоит
      Машинный перевод оплачивается отдельно, с баланса, по фактическому расходу: квоты покупать не нужно, минимального пополнения нет. Сайт на тысячу товаров переводится на один язык через Google Gemini от 500 рублей.

      Баланс пополняется картой прямо из интерфейса модуля. Нужен счёт — напишите, выставим.

      Перед покупкой
      Проведём демонстрацию: покажем работу модуля на живом стенде и ответим на вопросы по вашему проекту. Напишите, о чём идёт речь, и договоримся о времени.

      Модуль переводит сайт на Битриксе: интерфейс, инфоблоки, каталог, SEO-поля и оформление заказа. Перевод хранится в базе рядом с оригиналом — в том же элементе, а не в копии сайта и не в языковых файлах. Дубли инфоблоков заводить не нужно, а править тексты может контент-менеджер.

      Что переводится

      • Фразы интерфейса — подписи кнопок, меню, подсказки, тексты блоков вёрстки, письма. Каждая фраза заводится один раз и выводится на языке посетителя.
      • Инфоблоки — названия, анонсы, описания, свойства и их значения, подписи свойств, разделы, торговые предложения, справочники Highload-блоков.
      • SEO — шаблоны title, description, alt и title картинок на каждом языке, с наследованием по разделам.
      • Магазин — названия товаров и свойств на витрине и в корзине, свойства заказа, типы плательщиков, названия платёжных систем и служб доставки, единицы измерения.
      • Поиск, хлебные крошки, даты — посетитель английской версии видит результаты выдачи и названия месяцев на своём языке.

      Названия платёжных систем и служб доставки ядро Битрикса хранит одним текстом на все языки, поля под перевод там нет вовсе. Модуль переносит их в словарь и переводит как обычные фразы — поэтому оформление заказа на английском выглядит английским целиком, а не наполовину.

      Длина текста не ограничена, форматы — тоже
      Модуль различает три случая и ведёт себя в каждом по-своему.

      • Обычная строка — название товара, подпись кнопки, короткое поле. Переводится как есть.
      • HTML — описание товара, текст новости. Разметка обязана вернуться из перевода целой, а незакрытый тег чинится всегда, независимо от настроек: один такой тег разъезжает вёрстку всей страницы.
      • Конструкторы страниц. Поле sprint.editor — это JSON со структурой блоков, и переводить его как текст нельзя: перевелись бы имена ключей и служебные значения. Модуль отдаёт такое поле отдельным форматом, переводятся только подписи, заголовки и текстовые значения. Если после перевода число узлов не совпало, запись отменяется целиком. Поддержка идёт из коробки, настраивать ничего не нужно.

      Предельной длины у переводимого текста нет: статья на сорок тысяч знаков уходит целиком, а не режется на куски. Размер порции влияет только на то, сколько элементов поедет одним запросом.

      Одинаковые строки внутри порции отправляются один раз, а строки без единой буквы — артикулы, числа, коды — не отправляются вовсе. Платить за перевод артикула незачем.

      Машинным переводом пользоваться необязательно
      Модуль остаётся полноценным хранилищем переводов, даже если вы не потратите на машинный перевод ни рубля. Языковые поля создаются, переключение языка работает, подстановка на витрине идёт — а тексты вы заполняете руками: в карточке элемента, в словаре, выгрузкой в CSV и обратно.

      Так работают проекты, где перевод делает штатный редактор или бюро: модуль даёт структуру и инструменты, а откуда взялся текст, ему безразлично. Машинный перевод включается тогда, когда руками становится долго.

      Разработчик пишет текст прямо в коде
      Выносить фразы в языковые файлы заранее не нужно. Текст на базовом языке пишется прямо в шаблоне, вторым аргументом:

      <?= LANG_VAR('SUBMIT_BTN', 'Отправить заявку') ?>

      При первом показе страницы фраза заводится в словаре сама, с этим самым текстом. Поля остальных языков остаются пустыми — это честное состояние «перевода ещё нет», и ровно такие поля подбирает автоперевод.

      Отсюда следствие, ради которого всё и сделано: верстать и программировать можно по-русски, как будто мультиязычности на проекте нет. Сайт работает с первой минуты, словарь наполняется сам, а решение о языках принимается когда угодно потом — тексты к этому моменту уже собраны в одном месте. Отдельного этапа «вынести все надписи шаблона в языковые файлы» в проекте не возникает вовсе.

      Переменные подставляются по имени, чтобы фраза оставалась целой: LANG_VAR('DAYS_LEFT', ['COUNT' => 5]) для записи «Осталось #COUNT# дней». Склейка вида LANG_VAR('LEFT') . $n . LANG_VAR('DAYS') не переводится в принципе — в других языках другой порядок слов, — а целую фразу переводчик видит целиком. Один и тот же код, встреченный на странице дважды, даёт одно обращение к базе, а не два.

      Проект уже живёт на языковых файлах Битрикса? Модуль забирает их разом: просматривает /local/templates, /local/components и /local/php_interface, собирает все $MESS и заводит в словаре записи для тех кодов, которых там ещё нет. Существующие коды пропускаются, ничего не перетирается. Старые языковые файлы при этом можно не удалять: пока шаблон зовёт $MESS, он читает их, — так что переезд делается постепенно, а не одним рискованным заходом.

      Копий штатных компонентов в поставке нет
      Модуль не подменяет компоненты Битрикса своими копиями. Он подставляет перевод в данные, которые компонент уже получил, — одной строкой в result_modifier.php шаблона:

      IblockHelper::substituteStandardFields($arResult);

      Копия штатного компонента живёт до следующего обновления ядра. Дальше её чинит тот, кто внедрял, и так на каждом обновлении. Корзина и оформление заказа меняются от версии к версии чаще остального, и их копии ломаются заметнее всего — поэтому оформление заказа модуль переводит событиями, и в его шаблон лезть не нужно вовсе.

      Если элементы вы выбираете сами, не нужно и строки: перевод подставляется при выборке.

      Счёт за перевод предсказуем

      • Очередь запоминает, что изменилось, но сама ничего не переводит. Деньги списываются в момент, когда вы нажимаете кнопку. Обмен с 1С на тысячи позиций поэтому не превращается в неожиданный счёт.
      • Сравнение идёт по каждому полю отдельно: поправили заголовок — в перевод уйдёт заголовок, за описание вы не платите второй раз.
      • Кнопка «Остановить» проверяется перед каждым платным шагом. Останавливается и фоновое задание, и прогон из браузера, даже если вкладку уже закрыли. После этого перевод продолжается с того же места.
      • Баланс и история операций видны в админке, пополнение — оттуда же.

      Перевод предсказуем так же, как счёт

      • Контекст проекта — несколько предложений о сайте — уходит модели перед каждым переводом. Без него слово «заявка» переводится одним из десятка способов в зависимости от соседних слов.
      • Глоссарий задаёт термины, которые модель не подбирает, а берёт у вас: [EN] О компании = About Us, Сбербанк = Sberbank.
      • Отказ модели обрабатывается сам. Иногда вместо перевода приходит «я не могу обсуждать эту тему» — срабатывает на безобидных текстах про очереди на границе или таможенные ограничения. Модуль делает три попытки подряд: обычный перевод, повтор со строгой формулировкой, машинный переводчик Яндекса. Поля, которые перевела машина, попадают в отдельный список — глоссарий к ним не применялся, и их стоит просмотреть.
      • Сверка находит испорченные переводы — потерянную ссылку, незакрытый тег, оборванный текст. Обычная проверка их не замечает никогда: оригинал не менялся, значит с её точки зрения всё переведено. А на странице при этом может не быть половины текста.
      • Правка руками сильнее машины. Перевод, сохранённый человеком, очередь машинным не заменит.

      Как с этим работает контент-менеджер

      • Переключите язык админки и откройте карточку товара: поля показывают перевод, сохранение записывает перевод, оригинал остаётся нетронутым. Сверху жёлтая плашка, чтобы вы не перепутали, в каком режиме находитесь.
      • Фразы интерфейса правятся прямо на странице сайта: клик по фразе открывает маленький редактор, результат сразу виден в вёрстке. Длину текста видно только там — фраза, которая в списке записей выглядит нормальной, на кнопке не помещается, а в узкой колонке разваливает сетку.
      • Словарь выгружается в CSV и заливается обратно. Можно выгрузить все языки, отдать переводчику один и залить только его: остальные колонки не затрутся.

      Переведённые страницы индексируются
      Поисковый робот получает готовую HTML-страницу с переведённым текстом. Ничего не подменяется скриптом на лету и не накладывается поверх оригинала.

      Шаблоны title и description переводятся на каждом языке отдельно, поэтому языковые версии не конкурируют между собой в выдаче. Макросы {=this.name} и {=this.property.CODE} подставляют переведённые значения; если модель потеряла макрос при переводе, шаблон не записывается вовсе. Разметка hreflang и файл sitemap настраиваются штатными средствами Битрикса.

      Безопасность: что уходит с вашего сервера
      Единственный внешний адрес во всём модуле — api.mrlexndr.com. В запросе: строки на перевод, языки, формат, выбранный движок, глоссарий, контекст проекта и домен сайта.

      Телеметрии в модуле нет. Данные посетителей, статистика посещений, сведения об установке и содержимое сайта помимо переводимых строк наружу не передаются. Пока вы не запустили перевод, модуль не обращается никуда вовсе.

      Ключей Яндекса и Google на сайте заводить не нужно: сайт узнаётся по хешу лицензии Битрикса, а ключи живут на стороне сервиса — красть из настроек модуля нечего. Всё, что меняет данные, идёт методом POST с проверкой токена сессии и права на запись: ссылка, которая что-то меняет, однажды окажется в чужом письме. Служебные консольные скрипты в поставку не входят вовсе.

      Переводы остаются вашими
      Удаление модуля идёт мастером из двух шагов. Переводы не удаляются ни при какой настройке: словарь и таблица состояния остаются на месте. Это контент, а не служебные данные, и восстановить его неоткуда — вернёте модуль, переводить заново и платить второй раз не придётся. Галочка на первом шаге мастера, включённая по умолчанию, отвечает за другое: за настройки модуля — список языков, глоссарий, контекст и выбранный движок.

      Хранятся переводы в штатных объектах Битрикса, а не в собственном формате: языковые свойства элементов (NAME_EN, PREVIEW_TEXT_EN), пользовательские поля разделов, highload-блок со словарём. Прочитать их обычным API Битрикса можно и без установленного модуля.

      В коде проекта от модуля остаются вызовы LANG_VAR() и IblockHelper в шаблонах. Убрать их — значит вернуться к исходным русским значениям; сайт при этом продолжит работать. Если такая привязка смущает заранее, заведите свою функцию-обёртку: тогда имя модуля будет знать один файл проекта, и этому в документации посвящена отдельная страница.

      Для разработчика

      • Публичный интерфейс — LANG_VAR(), Lang::get() и IblockHelper. Спрятать модуль за своей обёрткой, чтобы код проекта не знал его имени, — штатный сценарий, ему посвящена отдельная страница документации.
      • Есть и чтение без автосоздания — Lang::peek(), для случаев, когда код фразы приходит из данных, а не из шаблона, и мусорить в словаре не нужно.
      • Около двадцати пяти обработчиков событий. Экран «Проверка стенда» показывает, все ли они на месте, и отдаёт паспорт установки: версия модуля, версия PHP, из какого каталога он загружен, какие модули доступны, какие языки целевые, включён ли запуск агентов по расписанию. Отсутствие обработчика снаружи не видно — очередь просто перестаёт наполняться, и ошибки при этом нет.
      • Кастомный компонент от штатного ничем не отличается: перевод подставляется в тот массив с элементами, который компонент уже собрал.
      • Документация — отдельный раздел на сайте разработчика, от первой установки до внутреннего устройства SEO-хранилища и списка всех сообщений модуля.

      Требования

      • PHP 8.2 или новее. Требование жёсткое и не декларативное: часть классов модуля объявлена readonly-классами, а такой конструкции до 8.2 не было.
      • Модули Битрикса: главный и Highload-блоки; для перевода инфоблоков — «Информационные блоки», для магазина — «Интернет-магазин».
      • Исходящий HTTPS до сервиса перевода. Без сети словарь и подстановка переводов на витрине работают, не работает только машинный перевод.

      Чего модуль не делает

      • Языковые версии сайта делаются языками Битрикса. Если на сайте они устроены иначе — папками или доменами без привязки языка, — модуль будет отдавать один и тот же язык везде.
      • Движки перевода: Яндекс и Google Gemini. DeepL нет.
      • В шаблон штатного компонента добавляется строка вызова. Готовых рецептов под коммерческие сборки вроде Аспро в документации нет: принцип от шаблона не зависит, а точное место вставки зависит от того шаблона, который у вас реально подключён.
      • Включённая перезапись существующих переводов необратима — восстанавливать придётся из бэкапа.

      Сколько это стоит
      Модуль — 99 990 рублей. Машинный перевод оплачивается отдельно, с баланса, по фактическому расходу: квоты покупать не нужно, минимального пополнения нет. Сайт на тысячу товаров переводится на один язык через Google Gemini от 500 рублей.

      Баланс пополняется картой прямо из интерфейса модуля. Нужен счёт — напишите, выставим.

      Перед покупкой
      Проведём демонстрацию: покажем работу модуля на живом стенде и ответим на вопросы по вашему проекту. Напишите, о чём идёт речь, и договоримся о времени.

      Модуль переводит сайт на Битриксе: интерфейс, инфоблоки, каталог, SEO-поля и оформление заказа. Перевод хранится в базе рядом с оригиналом — в том же элементе, а не в копии сайта и не в языковых файлах. Дубли инфоблоков заводить не нужно, а править тексты может контент-менеджер.

      Что переводится

      • Фразы интерфейса — подписи кнопок, меню, подсказки, тексты блоков вёрстки, письма. Каждая фраза заводится один раз и выводится на языке посетителя.
      • Инфоблоки — названия, анонсы, описания, свойства и их значения, подписи свойств, разделы, торговые предложения, справочники Highload-блоков.
      • SEO — шаблоны title, description, alt и title картинок на каждом языке, с наследованием по разделам.
      • Магазин — названия товаров и свойств на витрине и в корзине, свойства заказа, типы плательщиков, названия платёжных систем и служб доставки, единицы измерения.
      • Поиск, хлебные крошки, даты — посетитель английской версии видит результаты выдачи и названия месяцев на своём языке.

      Названия платёжных систем и служб доставки ядро Битрикса хранит одним текстом на все языки, поля под перевод там нет вовсе. Модуль переносит их в словарь и переводит как обычные фразы — поэтому оформление заказа на английском выглядит английским целиком, а не наполовину.

      Машинным переводом пользоваться необязательно
      Модуль остаётся полноценным хранилищем переводов, даже если вы не потратите на машинный перевод ни рубля. Языковые поля создаются, переключение языка работает, подстановка на витрине идёт — а тексты вы заполняете руками: в карточке элемента, в словаре, выгрузкой в CSV и обратно.

      Так работают проекты, где перевод делает штатный редактор или бюро: модуль даёт структуру и инструменты, а откуда взялся текст, ему безразлично. Машинный перевод включается тогда, когда руками становится долго.

      Разработчик пишет текст прямо в коде
      Выносить фразы в языковые файлы заранее не нужно. Текст на базовом языке пишется прямо в шаблоне, вторым аргументом:

      <?= LANG_VAR('SUBMIT_BTN', 'Отправить заявку') ?>

      При первом показе страницы фраза заводится в словаре сама, с этим самым текстом. Поля остальных языков остаются пустыми — это честное состояние «перевода ещё нет», и ровно такие поля подбирает автоперевод.

      Отсюда следствие, ради которого всё и сделано: верстать и программировать можно по-русски, как будто мультиязычности на проекте нет. Сайт работает с первой минуты, словарь наполняется сам, а решение о языках принимается когда угодно потом — тексты к этому моменту уже собраны в одном месте. Отдельного этапа «вынести все надписи шаблона в языковые файлы» в проекте не возникает вовсе.

      Переменные подставляются по имени, чтобы фраза оставалась целой: LANG_VAR('DAYS_LEFT', ['COUNT' => 5]) для записи «Осталось #COUNT# дней». Склейка вида LANG_VAR('LEFT') . $n . LANG_VAR('DAYS') не переводится в принципе — в других языках другой порядок слов, — а целую фразу переводчик видит целиком. Один и тот же код, встреченный на странице дважды, даёт одно обращение к базе, а не два.

      Копий штатных компонентов в поставке нет
      Модуль не подменяет компоненты Битрикса своими копиями. Он подставляет перевод в данные, которые компонент уже получил, — одной строкой в result_modifier.php шаблона:

      IblockHelper::substituteStandardFields($arResult);

      Копия штатного компонента живёт до следующего обновления ядра. Дальше её чинит тот, кто внедрял, и так на каждом обновлении. Корзина и оформление заказа меняются от версии к версии чаще остального, и их копии ломаются заметнее всего — поэтому оформление заказа модуль переводит событиями, и в его шаблон лезть не нужно вовсе.

      Если элементы вы выбираете сами, не нужно и строки: перевод подставляется при выборке.

      Счёт за перевод предсказуем

      • Очередь запоминает, что изменилось, но сама ничего не переводит. Деньги списываются в момент, когда вы нажимаете кнопку. Обмен с 1С на тысячи позиций поэтому не превращается в неожиданный счёт.
      • Сравнение идёт по каждому полю отдельно: поправили заголовок — в перевод уйдёт заголовок, за описание вы не платите второй раз.
      • Кнопка «Остановить» проверяется перед каждым платным шагом. Останавливается и фоновое задание, и прогон из браузера, даже если вкладку уже закрыли. После этого перевод продолжается с того же места.
      • Баланс и история операций видны в админке, пополнение — оттуда же.

      Перевод предсказуем так же, как счёт

      • Контекст проекта — несколько предложений о сайте — уходит модели перед каждым переводом. Без него слово «заявка» переводится одним из десятка способов в зависимости от соседних слов.
      • Глоссарий задаёт термины, которые модель не подбирает, а берёт у вас: [EN] О компании = About Us, Сбербанк = Sberbank.
      • Отказ модели обрабатывается сам. Иногда вместо перевода приходит «я не могу обсуждать эту тему» — срабатывает на безобидных текстах про очереди на границе или таможенные ограничения. Модуль делает три попытки подряд: обычный перевод, повтор со строгой формулировкой, машинный переводчик Яндекса. Поля, которые перевела машина, попадают в отдельный список — глоссарий к ним не применялся, и их стоит просмотреть.
      • Сверка находит испорченные переводы — потерянную ссылку, незакрытый тег, оборванный текст. Обычная проверка их не замечает никогда: оригинал не менялся, значит с её точки зрения всё переведено. А на странице при этом может не быть половины текста.
      • Правка руками сильнее машины. Перевод, сохранённый человеком, очередь машинным не заменит.

      Как с этим работает контент-менеджер

      • Переключите язык админки и откройте карточку товара: поля показывают перевод, сохранение записывает перевод, оригинал остаётся нетронутым. Сверху жёлтая плашка, чтобы вы не перепутали, в каком режиме находитесь.
      • Фразы интерфейса правятся прямо на странице сайта: клик по фразе открывает маленький редактор, результат сразу виден в вёрстке. Длину текста видно только там — фраза, которая в списке записей выглядит нормальной, на кнопке не помещается, а в узкой колонке разваливает сетку.
      • Словарь выгружается в CSV и заливается обратно. Можно выгрузить все языки, отдать переводчику один и залить только его: остальные колонки не затрутся.

      Переведённые страницы индексируются
      Поисковый робот получает готовую HTML-страницу с переведённым текстом. Ничего не подменяется скриптом на лету и не накладывается поверх оригинала.

      Шаблоны title и description переводятся на каждом языке отдельно, поэтому языковые версии не конкурируют между собой в выдаче. Макросы {=this.name} и {=this.property.CODE} подставляют переведённые значения; если модель потеряла макрос при переводе, шаблон не записывается вовсе. Разметка hreflang и файл sitemap настраиваются штатными средствами Битрикса.

      Что уходит с вашего сервера
      Единственный внешний адрес во всём модуле — api.mrlexndr.com. В запросе уходят тексты на перевод, языки, формат, выбранный движок, глоссарий, контекст проекта и домен сайта. Данные посетителей, статистика посещений и содержимое сайта помимо переводимых строк наружу не передаются.

      Ключей Яндекса и Google на сайте заводить не нужно: сайт узнаётся по хешу лицензии Битрикса. Всё, что меняет данные, идёт методом POST с проверкой токена сессии и права на запись. Служебные консольные скрипты в поставку не входят.

      Для разработчика

      • Публичный интерфейс — LANG_VAR(), Lang::get() и IblockHelper. Спрятать модуль за своей обёрткой, чтобы код проекта не знал его имени, — штатный сценарий, ему посвящена отдельная страница документации.
      • Есть и чтение без автосоздания — Lang::peek(), для случаев, когда код фразы приходит из данных, а не из шаблона, и мусорить в словаре не нужно.
      • Около двадцати пяти обработчиков событий. Экран «Проверка стенда» показывает, все ли они на месте, и отдаёт паспорт установки: версия модуля, версия PHP, из какого каталога он загружен, какие модули доступны, какие языки целевые, включён ли запуск агентов по расписанию. Отсутствие обработчика снаружи не видно — очередь просто перестаёт наполняться, и ошибки при этом нет.
      • Кастомный компонент от штатного ничем не отличается: перевод подставляется в тот массив с элементами, который компонент уже собрал.
      • Документация — отдельный раздел на сайте разработчика, от первой установки до внутреннего устройства SEO-хранилища и списка всех сообщений модуля.

      Требования

      [LIST]
    • PHP 8.2 или новее. Требование жёсткое и не декларативное: часть классов модуля объявлена readonly-классами, а такой конструкции до 8.2 не было.
    • Модули Би
    • Как купить

      В нашем каталоге представлены готовые сайты и интернет-магазины для различных сфер деятельности.
      Для того, чтобы найти подходящий вариант воспользуйтесь фильтром, расположенном в каждом разделе.
      Вы можете отфильтровать готовые решения по тематике, стоимости и другим параметрам.

      Пожалуйста, обратить внимание, что для установки купленного решения вам обязательно потребуется система управления Битрикс, позволяющая редактировать сайт или интернет-магазин без знания программного кода. 

      Перейдя на детальную страницу любого решения, вы увидите его цену, кнопку со ссылкой на демо версию, список подходящих редакций Битрикс и два варианта покупки:

      1. Вы покупаете только решение (подходит тем, у кого уже есть платформа Битрикс с нужным набором функций).
      2. Вы покупаете все необходимое для установки в одном наборе, в который уже входит:
      • выбранное вами готовое решение;
      • минимально требуемая редакция 1С-Битрикс;
      • аренда хостинга и домена.

      Вы можете выбрать базовый набор, либо составить свой добавив в него:

      • другую редакцию 1С-Битрикс, которая включает в себя больше полезных функций;
      • более мощный хостинг;
      • услуги приоритетной техподдержки и пр.

      Положите товары в корзину, кликните по ней в правом верхнем углу страницы и нажмите на кнопку
      «Оформить заказ» или кликните по кнопке «Быстрый заказ».

      Быстрый заказ

      Функция «Быстрый заказ» позволяет пропустить стандартную процедуру оформления покупки. Вместо этого вы оставляете свои контактные данные в специальной форме обратной связи и ожидаете звонка нашего сотрудника. Он уточняет позиции вашего заказа, отвечает на вопросы и отправляет подтверждение заказа на вашу электронную почту. 

      Обычное оформление

      При выборе стандартного оформления заказа, вы увидите новую страницу. Здесь вам нужно будет выбрать тип плательщика, вариант оплаты и доставки заказа. 

      Оплата

      Вы можете оплатить заказ по безналичному расчету, а также наличными при помощи платежной системы Яндекс.Деньги, выбрав способ оплаты через электронный кошелек или картами Visa, Mastercard, либо Maestro.

      Доставка

      Купленные программные продукты будут отправлены вам по электронной почте в виде цифро-буквенного кода. Данный код (лицензионный ключ) выписывается автором программного продукта и предоставляет вам неисключительное право на его использование.

      Установка

      При покупке готового решения вместе с системой управления сайтом Битрикс, их установка проводится абсолютно бесплатно.

      Оплата
      Безналичный расчет

      Данный способ оплаты доступен для физических и юридических лиц. После заполнения и подтверждения заказа вы получите по e-mail счeт со всеми реквизитами, который необходимо распечатать и оплатить в любом коммерческом банке в течение 5 банковских дней с момента оформления заказа.
      Пожалуйста, обратите внимание, что продажа программных продуктов осуществляется без НДС
      (пп. 26 п. 2 ст. 149 НК РФ).

      Оплата при помощи сервиса Яндекс.Деньги

      Данный способ оплаты доступен для физических лиц (комиссия за перечисление денег не взымается). Надёжность и безопасность приёма платежей подтверждена международными сертификатами PCI Security Standards Council. Информация о сервисе находится в официальных реестрах Visa International и MasterCard Worldwide. 

      После заполнения и подтверждения заказа вы будете переадресованы на защищенный веб-сайт сервиса Яндекс.Деньги, где сможете выбрать способ оплаты при помощи платежных карт Visa, Mastercard или Maestro, либо электронного кошелька Яндекс.Деньги. 

      Доставка
      Доставка

      Купленные программные продукты поставляются в виде цифро-буквенного кода, используя который их можно установить на хостинг согласно инструкции. Код отправляется онлайн на указанную в заказе электронную почту.

      После получения оплаты от покупателя до момента отправки ему лицензионного ключа может пройти несколько часов.
      На протяжении этого времени проводится оформление купленной программной продукции.

      Внимание! Неправильно указанный e-mail может привести к дополнительной задержке. Пожалуйста, проверяйте ваши персональные данные при регистрации и оформлении заказа. Конфиденциальность ваших данных гарантируется.

      Для установки вам потребуется

      • Система управления «Битрикс» (подходящей редакции);
      • Домен;
      • Хостинг. 

      Все это вы можете купить в готовом наборе у нас на сайте, ускорив процесс дальнейшей установки.

      Базовую установку мы сделаем для вас бесплатно!

      Отзывы
      Отзывы
      Нет оценок
      Оставить отзыв
      Загрузка отзывов...
      Задать вопрос
      Вы можете задать любой интересующий вас вопрос по товару или работе магазина.

      Наши квалифицированные специалисты обязательно вам помогут.

      Задать вопрос

      captcha
      Не нашли ответа на свой вопрос?
      Свяжитесь с нами, и мы предоставим необходимую информацию.
      Задать вопрос
      Подпишитесь на рассылку, и узнавайте о скидках и акциях первыми!
      • Telegram
      • Viber
      • Viber
      • WhatsApp
      Каталог решений
      Готовые интернет-магазины 148
      Готовые сайты 373
      Для интернет-магазина 523
      Инструменты 747
      Интеграция 270
      Маркетинг, реклама 303
      Мобильные приложения 12
      Поддержка клиентов 157
      Решения для Битрикс24 308
      Компания
      О маркетплейсе
      Реквизиты
      Контакты
      Политика
      Информация
      Оплата и доставка
      Условия оплаты
      Гарантия и возврат
      Вопросы и ответы
      Помощь
      Блог
      Вопрос-ответ
      Наши контакты
      +7 (926) 525-75-05
      +7 (926) 525-75-05 с 9:00 до 18:00
      info@apsel.ru
      141703 г. Москва, ул. Речная, 22, Долгопрудный
      © Апсель.Маркет. Маркетплейс готовых решений на Битрикс. © Апсель Веб-студия Апсель 2009 - 2026