Как я могу изменить порядок языковых кнопок 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, вам необходимо выполнить следующие шаги:

  1. перейти на Zope ([URL вашего сайта] / manage_main)
  2. Оттуда перейдите в Настройки портала ([URL вашего сайта] /portal_view_customizations/registrations.html)
  3. оттуда перейдите к plone.app.i18n.locales.languageselector (Products.LinguaPlone.interfaces.ILinguaPloneProductLayer)
  4. оттуда добавить этот кусок кода <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 для языкового общения и др.), поэтому я не был впечатлен.

Другие вопросы по тегам