Как я могу изменить порядок языковых кнопок Plone LinguaPlone внутри Zope?
Так, например, я хотел бы изменить порядок представления языковых кнопок пользователю с английского - китайского - французского на китайский - французского - английский.
Я предполагаю, что он находится в:zope.interface.interface-plone.app.i18n.locales.languageselector, который находится внутри portal_view_customizations / registrations.html.
Более конкретно, я предполагаю, что это связано с этим фрагментом скрипта:
> <tal:nonflag condition="python:not showFlags or not flag" replace="name">
> language name
> </tal:nonflag>
Однако я все еще не знаю, как или что я должен написать, чтобы контролировать порядок языков на экране.
Любая помощь будет оценена.
2 ответа
Поэтому я нашел решение, которое работает!
Чтобы изменить порядок языков на вашем веб-сайте, который использует Plone CMS, вам необходимо выполнить следующие шаги:
- перейти на Zope ([URL вашего сайта] / manage_main)
- Оттуда перейдите в Настройки портала ([URL вашего сайта] /portal_view_customizations/registrations.html)
- оттуда перейдите к plone.app.i18n.locales.languageselector (Products.LinguaPlone.interfaces.ILinguaPloneProductLayer)
- оттуда добавить этот кусок кода
<tal:language repeat="i python:[2,0,1]">
перед<li>
тег, где [2,0,1] представляет выбранный мной заказ. Если бы у вас был больший список языков, то, конечно, это было бы что-то вроде [0,1,2,3,4... и т. Д.], Которое вы можете изменить, как вам угодно.
Спасибо @Ulrich Schwarz, хотя я не мог заставить его работать, используя твои предложения. Я уверен, что это можно сделать несколькими способами, в том числе предложенными вами.
Нет графического интерфейса для изменения порядка записей в инструменте ZMI portal_language (и это порядок, который будет использоваться на странице, насколько я смог узнать).
Однако: в portal_setup
, вы можете экспортировать языковые настройки, которые дадут вам файл portal_languages.xml
в архиве с содержимым, похожим на следующее:
<?xml version="1.0"?>
<object>
<default_language value="en"/>
<use_path_negotiation value="False"/>
<use_cookie_negotiation value="True"/>
<set_cookie_everywhere value="False"/>
<use_request_negotiation value="True"/>
<use_cctld_negotiation value="False"/>
<use_content_negotiation value="True"/>
<use_combined_language_codes value="False"/>
<display_flags value="False"/>
<start_neutral value="False"/>
<use_subdomain_negotiation value="False"/>
<authenticated_users_only value="False"/>
<supported_langs>
<element value="de"/>
<element value="da"/>
<element value="it"/>
<element value="en"/>
<element value="fr"/>
<element value="cs"/>
</supported_langs>
</object>
Вы можете изменить порядок строк в <supported_langs>
, поместите файл обратно в архив и используйте "импортировать загруженный архив" в portal_setup
Функция импорта для применения измененного XML-файла.
В качестве альтернативы вы можете создать (и запустить через вкладку "тест") такой скрипт (Python), который сначала удалит, а затем заново добавит языки один за другим в нужном порядке. (Вам может понадобиться запустить @@language-setup-folders
повторите шаг, если вы используете разные папки и переключатель корневого языка для своих языков.)
# Return a string identifying this script.
print "This is the", script.meta_type, '"%s"' % script.getId(),
if script.title:
print "(%s)" % html_quote(script.title),
print "in", container.absolute_url()
pl = context.portal_languages
pl.removeSupportedLanguages(pl.getSupportedLanguages())
print pl.supported_langs
pl.addSupportedLanguage('de')
pl.addSupportedLanguage('fr')
pl.addSupportedLanguage('da')
pl.addSupportedLanguage('en')
print pl.supported_langs
return printed
Я пытался идти, хотя документально manage_setLanguageSettings
метод напрямую, но, по крайней мере, в 4.3.2, который требует от вас явной установки всех других параметров (используйте cookie для языкового общения и др.), поэтому я не был впечатлен.