НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
128 of 182 menu

Таблица locales_source

Таблица locales_source является фундаментальной частью системы локализации Drupal. Она хранит все строки, которые были обнаружены в коде (модулях, темах, профилях) и интерфейсе администратора и которые предназначены для перевода на другие языки.

Поля

Поле Тип данных Описание
lid int Уникальный идентификатор строки (⁅i⁆Locale ID⁅/i⁆). Первичный ключ, автоинкремент.
source text Исходная строка на английском языке (или на другом языке по умолчанию), которая подлежит переводу. Это текст, который видит разработчик и переводчик.
context varchar(255) Контекст строки. Необязательный параметр, позволяющий различать одинаковые исходные строки, которые могут иметь разные переводы в зависимости от контекста их использования (например, слово "Order" может означать "заказ" или "приказ").
version varchar(20) Версия Drupal core, в которой была введена или обновлена эта строка. Например, 10.1.0. Помогает системе обновлений отслеживать изменения в строках.
textgroup varchar(255) Группа текста, к которой принадлежит строка. Определяет, откуда строка была извлечена. Основные группы: default (строки из кода), entities (сущности), menu (меню), views (представления).
type varchar(255) Тип строки. Указывает, в каком контексте была найдена строка. Например: javascript, configuration, interface.
location text Путь или местоположение в исходном коде, откуда была извлечена эта строка. Может быть пустым для строк, добавленных через интерфейс.

Как это работает

При включении модуля Locale и запуске процесса извлечения строк (через административный интерфейс /admin/config/regional/translate/import или с помощью Drush-команды drush locale:check) Drupal сканирует файлы ядра, модулей и тем на наличие функций, предназначенных для перевода (таких как t(), new TranslatableMarkup()).

Все найденные строки записываются в таблицу locales_source. Каждая запись представляет собой уникальную пару source + context.

Когда на сайте требуется отобразить интерфейс на неанглийском языке, система ищет исходную строку в locales_source, а затем по её lid находит соответствующий перевод в таблице locales_target для активного языка.

Если перевод для запрошенной строки не найден, будет отображен исходный текст из поля source. Администратор может вручную добавить или исправить переводы через интерфейс по адресу /admin/config/regional/translate, что приведет к обновлению связанной таблицы locales_target.

Пример SQL-запроса

Найти все строки, содержащие определенное слово, и информацию об их контексте:

SELECT lid, source, context, location FROM locales_source WHERE source LIKE '%comment%' ORDER BY source;

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

SELECT lt.language, COUNT(ls.lid) AS untranslated_count FROM locales_source ls CROSS JOIN (SELECT DISTINCT language FROM locales_target) lt LEFT JOIN locales_target lt2 ON ls.lid = lt2.lid AND lt.language = lt2.language WHERE lt2.translation IS NULL GROUP BY lt.language;

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

  • таблицу locales_target,
    которая хранит сами переводы строк на разные языки
  • таблицу locales_location,
    которая содержит подробную информацию о местоположении строк в исходном коде
  • таблицу languages,
    которая хранит список доступных языков на сайте
  • таблицу cache_locales,
    которая кэширует данные локализации для повышения производительности
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить