Таблица locales_target
Таблица locales_target является центральным хранилищем для всех переводов интерфейса Drupal на языки, отличные от языка по умолчанию. Она содержит переводы строк, которые были импортированы из .po-файлов или созданы через административный интерфейс.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
lid |
int |
Уникальный идентификатор строки для перевода. Внешний ключ, ссылается на locales_source.lid.
|
translation |
text |
Переведенный текст строки на целевой язык. |
language |
varchar(12) |
Языковой код перевода (например, ru, de, fr). Внешний ключ, ссылается на languages.language.
|
plid |
int |
Идентификатор родительской строки для множественных форм (plural forms). Ссылается на locales_source.lid.
|
plural |
int |
Индекс множественной формы для языков с несколькими формами множественного числа. |
Как это работает
Система локализации Drupal работает по принципу "исходная строка - перевод". Исходные строки на языке по умолчанию (обычно английском) хранятся в таблице locales_source. Когда Drupal需要 отобразить строку интерфейса для неанглийского языка, он ищет перевод в таблице locales_target по связке lid и language.
Переводы могут быть добавлены несколькими способами: через импорт .po-файлов, через административный интерфейс в разделе "Перевод интерфейса" или программно с помощью функции locale().
Для строк с множественным числом (plural forms) используется комбинация полей plid и plural. Поле plid указывает на родительскую строку в locales_source, а plural определяет, какая именно форма множественного числа используется в данном переводе.
При изменении или обновлении исходных строк в коде Drupal (например, при обновлении модуля) система помечает переводы как "устаревшие", но не удаляет их из таблицы. Это позволяет вручную проверить и обновить переводы при необходимости.
Пример SQL-запроса
Получить все переводы на русский язык для определенного модуля можно следующим запросом:
SELECT ls.source, lt.translation, ls.context
FROM locales_target lt
INNER JOIN locales_source ls ON lt.lid = ls.lid
WHERE lt.language = 'ru'
AND ls.textgroup = 'modules%node%'
ORDER BY ls.source;
Смотрите также
-
таблицу
locales_source,
которая хранит исходные строки для перевода -
таблицу
languages,
которая содержит список доступных языков -
таблицу
cache_locale,
которая кэширует данные локализации -
таблицу
locales_location,
которая отслеживает расположение строк в коде