Как интернационализировать логотип сайта
Вопрос по i18n (ответа в сети не нашёл). Нужно отображать логотип сайта (логотип фирмы) в зависимости от языка отображаемой страницы (логотип многоязыковой). Как правильно выполнить такую затею?
Я бы переопределила класс вьюлета plone.logo и в нем определяла бы текущий язык, в зависимости от него формировала бы путь к картинки с логотипом. Как переопределить класс вьюлета написано здесь, как получить текущий язык - здесь (там вообще много чего полезного написано), ну а остальное - это несколько строк на python. Естественно у вас должна быть создана своя "тема"
Предлагаю альтернативный способ. Основан на portal_view_customizations и стандартном механизме интернационализации движка Plone. Соответственно, из основного каталога Вашего сайта Plone (ZMI) сначала подправим вьюлет /portal_view_customizations/zope.interface.interface-plone.logo здесь нужно добавить тэг с меткой строки перевода i18n, примерно такой: i18n:translate="my_logo" . Тэг img будем переводить целиком, здесь, во вьюлете он должен ссылаться на картинку логотипа для языка сайта по-умолчанию (как правило - английский). Теперь добавляем картинку с переводным логотипом, например рядом с кастомизированной картинкой логотипа, которая лежит по-умолчанию в /portal_skins/custom . Старая (которая уже была на сайте) картинка логотипа должна соответствовать языку сайта по-умолчанию. Теперь нужно в дополнить фйлик (в моем Plone) "Путь до Plone"\Plone\buildout-cache\eggs\plone.app.locales-3.3.9-py2.4.egg\plone\app\locales\i18n\plone-ru.po - это для русского языка (в Linux путь выглядит по другому, но принцип тот же), двумя строчками
msgid "my_logo"
msgstr "сюда вставьте тэг img из Вашего кастомизированного вьюлета только поменяйте src на Вашу переводную картинку и все кавычки в тэге заэкранируйте обратным слэшем"
Перегрузите Plone.
ну можно и так...только это хуже, так как:
1) вы меняете исходный код пакета plone.app.locales -> будут
проблемы при обновлении до новых версий и переездами на хостинг. Кстати
тоже самое можно сделать добавив папку i18n в свой пакет (например ту
же тему) и туда файл .po с переводом (образец можно взять из того же plone.app.locales)
2) при разработке сайта обычно дело одним логотипом не обходится и все равно нужно много кастомизаций -> лучше хранить их все в теме, чем в ZMI
3) пример с логотипом - хороший повод разобраться с кастомизацией через brawser layer и познакомиться с plone api ))

