Skip to content

Команды переводов (translate)

Стандартная команда Битрикс для работы с локализацией: индексация языковых файлов.

translate:index

Индексирует проект для файлов локализации, создавая поисковый индекс всех языковых файлов.

Синтаксис

bash
php bitrix.php translate:index [опции]

Опции

  • --path=<путь> или -p - путь для индексации (по умолчанию: /bitrix/modules)
  • -v, -vv, -vvv - уровень подробности вывода

Примеры использования

bash
# Индексация модулей (по умолчанию /bitrix/modules)
php bitrix.php translate:index

# Индексация конкретного пути
php bitrix.php translate:index -p /local/modules
php bitrix.php translate:index --path=/bitrix/modules/catalog

# С подробным выводом
php bitrix.php translate:index -v
php bitrix.php translate:index -vv  # очень подробный вывод
php bitrix.php translate:index -vvv  # отладочный вывод

Что индексируется

Команда сканирует и индексирует следующую структуру:

  1. Папки lang/ - структура директорий с переводами
  2. Языковые файлы - файлы переводов в каждой языковой папке
  3. Фразы переводов - отдельные строки перевода и их значения
  4. Пути к файлам - связи между файлами и переводами

Структура языковых файлов

/bitrix/modules/module.id/
├── lang/
│   ├── ru/              # Русский язык
│   │   ├── lib/
│   │   │   └── entity.php
│   │   ├── options.php
│   │   └── install/
│   │       └── index.php
│   └── en/              # Английский язык
│       ├── lib/
│       │   └── entity.php
│       └── options.php

Формат языковых файлов

php
<?php
// /bitrix/modules/company.shop/lang/ru/lib/entity/product.php

$MESS['COMPANY_SHOP_PRODUCT_NAME'] = 'Название товара';
$MESS['COMPANY_SHOP_PRODUCT_PRICE'] = 'Цена';
$MESS['COMPANY_SHOP_PRODUCT_DESCRIPTION'] = 'Описание';

Использование

Индексация после добавления переводов

bash
#!/bin/bash
# Индексация после добавления новых языковых файлов

cd /var/www/bitrix

echo "Индексация переводов..."

# Индексация всех модулей
php bitrix.php translate:index -v

# Индексация локальных модулей
php bitrix.php translate:index --path=/local/modules -v

echo "Индексация завершена"

Индексация после установки модуля

bash
#!/bin/bash
# Автоматическая индексация после установки модуля

MODULE_ID="$1"

if [ -z "$MODULE_ID" ]; then
    echo "Использование: $0 <module_id>"
    exit 1
fi

cd /var/www/bitrix

# Установить модуль
php bitrix.php module:install "$MODULE_ID"

# Найти путь к модулю
if [ -d "../local/modules/$MODULE_ID" ]; then
    MODULE_PATH="/local/modules/$MODULE_ID"
elif [ -d "modules/$MODULE_ID" ]; then
    MODULE_PATH="/bitrix/modules/$MODULE_ID"
else
    echo "Модуль не найден"
    exit 1
fi

# Индексировать переводы модуля
php bitrix.php translate:index --path="$MODULE_PATH"

echo "Модуль $MODULE_ID установлен и проиндексирован"

Регулярная переиндексация

bash
#!/bin/bash
# Еженедельная переиндексация всех переводов

cd /var/www/bitrix

LOG_FILE="/var/log/bitrix-translate-index.log"

{
    echo "=== Индексация переводов: $(date) ==="
    
    # Индексация стандартных модулей
    php bitrix.php translate:index -v
    
    # Индексация локальных модулей
    php bitrix.php translate:index --path=/local/modules -v
    
    echo "=== Завершено: $(date) ==="
    echo ""
} >> "$LOG_FILE" 2>&1

Индексация при разработке

bash
#!/bin/bash
# Индексация конкретного модуля при разработке

MODULE_ID="${1:-company.shop}"
MODULE_PATH="/local/modules/$MODULE_ID"

cd /var/www/bitrix

if [ -d "$MODULE_PATH/lang" ]; then
    echo "Индексация переводов модуля: $MODULE_ID"
    php bitrix.php translate:index --path="$MODULE_PATH" -v
else
    echo "Языковые файлы не найдены в $MODULE_PATH"
fi

Troubleshooting

Индексация не работает

Проблема: Команда выполняется, но переводы не индексируются

Решения:

  1. Проверьте наличие языковых файлов в указанном пути
  2. Убедитесь, что файлы имеют правильную структуру
  3. Проверьте права доступа к файлам
  4. Используйте опцию -vv для отладки

Переводы не отображаются

Проблема: После индексации переводы не работают

Решения:

  1. Очистите кеш: php bitrix.php cache:clear
  2. Проверьте синтаксис языковых файлов
  3. Убедитесь, что модуль установлен
  4. Переиндексируйте: php bitrix.php translate:index --path=/path/to/module

Ошибка прав доступа

Проблема: Permission denied при индексации

Решения:

  1. Проверьте права доступа к директории с переводами
  2. Убедитесь, что процесс PHP может читать файлы
  3. Установите правильные права: chmod -R 644 lang/

Полезные советы

💡 Индексируйте регулярно - настройте автоматическую индексацию

💡 Проверяйте полноту - используйте скрипты для проверки всех переводов

💡 Версионируйте - храните языковые файлы в Git

💡 Структурируйте - организуйте переводы по логическим группам

💡 Используйте константы - называйте ключи по единому стандарту

💡 Документируйте - добавляйте комментарии к сложным переводам


Смотрите также

Документация BXMax CLI