Drupal 6.22, PHP 5.3.8, MySQL 5.1.28, "чистая" установка в пустую базу. Сразу после установки включаю модуль Localization update и добавляю русский язык. Автоматически загружается и устанавливается перевод для русского языка. При этом часть строчек остаются непереведёнными, например, Primary links или Navigation. В самом переводе они точно есть, но почему-то не применились.
Ладно, как говорится, "будем по-нашему, старинному". Скачиваю с официального FTP .po-файл с последней версией перевода, иду в "Перевод интерфейса", "Импорт", выбираю "Строки из загружаемого файла заменят существующие, новые строки будут добавлены" и импортирую файл с переводом. Всё применяется без ошибок... но непереведённые строчки остаются непереведёнными!
На всякий случай, чтобы убедиться, смотрю в сам .po-файл - там перевод для Primary links и Navigation есть.
Что я делаю не так?
P.S. Уточняю, что в саму таблицу locales_target перевод залился правильно, строчки для 'Navigation' и 'Primary links' там есть. Но на самом сайте они не отображаются. Кэш на сайте отключен, но на всякий случай его очищал.
Комментарии
Primary links и Navigation это названия меню, которые создаются в процессе установки друпала. Теоретически если бы вы устанавливали перевод сразу при установке из .ro файла, то возможно они были бы локализованы (см. [ru-api=menu_install]menu_install[/ru-api]).
После установки их можно перевести только в ручную либо с помощью различных модулей для мультиязычного контента.
Аналогичная проблема есть со словарем (tags), типами нод (page и article), характеристиками нод (title и body) и т.д. Вообщем всё, что связано с содержимым сайта переводится в момент его создания.
http://drupal.org/node/1016006
http://drupal.org/node/1048006
Похоже, вы правы. Названия меню и типов нод хранятся в соответствующих таблицах БД и не транслируются при отображении страницы, а берутся напрямую из базы.
Я попробовал сделать "чистую" установку, подсунув в инсталлятор .po-файл, и столкнулся с другой проблемой: вместо добавления языка "Русский" инсталлятор добавил мне язык "drupal-6.22.ru", по имени .po-файла с переводом. Видимо, я опять делаю что-то не так?
А если переименовать файл?
В общем, поковырялся чуть-чуть в коде, поэкспериментировал. Вышло так: если подусунуть инсталлятору файл перевода в виде ru.po, то он нормально даёт выбрать при установке русский язык, но после установки весь сайт оказывается... на английском. При этом в настройках сайта русский язык стоит выбранным по умолчанию, а в таблице locales_targets - девственная пустота. Но описание типов материалов в базе, тем не менее, на русском! Ладно, фигня - берём файл перевода и тупо снова его импортируем, перезаписывая все строки. После этого почти весь сайт оказывается переведённым... почти. Описания для actions остаются на английском, хотя во время установки функция t() в нужных местах вызывается. В общем, установка Друпала - дело простое, но богатое неожиданностями.